1 ext4 crypto: inherit encryption policies on inode and directory create
3 From: Michael Halcrow <mhalcrow@google.com>
5 Signed-off-by: Michael Halcrow <mhalcrow@google.com>
6 Signed-off-by: Theodore Ts'o <tytso@mit.edu>
8 fs/ext4/namei.c | 21 ++++++++++++++++++++-
9 1 file changed, 20 insertions(+), 1 deletion(-)
11 diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
12 index 9939db9..4712590 100644
15 @@ -2249,7 +2249,19 @@ retry:
16 inode->i_op = &ext4_file_inode_operations;
17 inode->i_fop = &ext4_file_operations;
19 - err = ext4_add_nondir(handle, dentry, inode);
21 +#ifdef CONFIG_EXT4_FS_ENCRYPTION
22 + if (!err && ext4_encrypted_inode(dir)) {
23 + err = ext4_inherit_context(dir, inode);
26 + unlock_new_inode(inode);
32 + err = ext4_add_nondir(handle, dentry, inode);
33 if (!err && IS_DIRSYNC(dir))
34 ext4_handle_sync(handle);
36 @@ -2430,6 +2442,13 @@ retry:
37 err = ext4_init_new_dir(handle, dir, inode);
40 +#ifdef CONFIG_EXT4_FS_ENCRYPTION
41 + if (ext4_encrypted_inode(dir)) {
42 + err = ext4_inherit_context(dir, inode);
44 + goto out_clear_inode;
47 err = ext4_mark_inode_dirty(handle, inode);
49 err = ext4_add_entry(handle, dentry, inode);