Commit dde680ce authored by Michael Halcrow's avatar Michael Halcrow Committed by Theodore Ts'o

ext4 crypto: inherit encryption policies on inode and directory create

Signed-off-by: default avatarMichael Halcrow <mhalcrow@google.com>
Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
parent d9cdc903
...@@ -2253,7 +2253,19 @@ static int ext4_create(struct inode *dir, struct dentry *dentry, umode_t mode, ...@@ -2253,7 +2253,19 @@ static int ext4_create(struct inode *dir, struct dentry *dentry, umode_t mode,
else else
inode->i_fop = &ext4_file_operations; inode->i_fop = &ext4_file_operations;
ext4_set_aops(inode); ext4_set_aops(inode);
err = ext4_add_nondir(handle, dentry, inode); err = 0;
#ifdef CONFIG_EXT4_FS_ENCRYPTION
if (!err && ext4_encrypted_inode(dir)) {
err = ext4_inherit_context(dir, inode);
if (err) {
clear_nlink(inode);
unlock_new_inode(inode);
iput(inode);
}
}
#endif
if (!err)
err = ext4_add_nondir(handle, dentry, inode);
if (!err && IS_DIRSYNC(dir)) if (!err && IS_DIRSYNC(dir))
ext4_handle_sync(handle); ext4_handle_sync(handle);
} }
...@@ -2437,6 +2449,13 @@ static int ext4_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) ...@@ -2437,6 +2449,13 @@ static int ext4_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
err = ext4_init_new_dir(handle, dir, inode); err = ext4_init_new_dir(handle, dir, inode);
if (err) if (err)
goto out_clear_inode; goto out_clear_inode;
#ifdef CONFIG_EXT4_FS_ENCRYPTION
if (ext4_encrypted_inode(dir)) {
err = ext4_inherit_context(dir, inode);
if (err)
goto out_clear_inode;
}
#endif
err = ext4_mark_inode_dirty(handle, inode); err = ext4_mark_inode_dirty(handle, inode);
if (!err) if (!err)
err = ext4_add_entry(handle, dentry, inode); err = ext4_add_entry(handle, dentry, inode);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment