aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext4
diff options
context:
space:
mode:
authorMichael Halcrow <mhalcrow@google.com>2015-04-12 00:55:09 -0400
committerTheodore Ts'o <tytso@mit.edu>2015-04-12 00:55:09 -0400
commitdde680cefc842e58524772099a3b8219e5abf551 (patch)
tree72d0983526c7797f69dd10daf601ac822c2b8779 /fs/ext4
parentd9cdc903318171571f1cd1e5737fd0cab94186be (diff)
ext4 crypto: inherit encryption policies on inode and directory create
Signed-off-by: Michael Halcrow <mhalcrow@google.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'fs/ext4')
-rw-r--r--fs/ext4/namei.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index acd79198b800..77a63ff4aeb9 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -2253,7 +2253,19 @@ retry:
2253 else 2253 else
2254 inode->i_fop = &ext4_file_operations; 2254 inode->i_fop = &ext4_file_operations;
2255 ext4_set_aops(inode); 2255 ext4_set_aops(inode);
2256 err = ext4_add_nondir(handle, dentry, inode); 2256 err = 0;
2257#ifdef CONFIG_EXT4_FS_ENCRYPTION
2258 if (!err && ext4_encrypted_inode(dir)) {
2259 err = ext4_inherit_context(dir, inode);
2260 if (err) {
2261 clear_nlink(inode);
2262 unlock_new_inode(inode);
2263 iput(inode);
2264 }
2265 }
2266#endif
2267 if (!err)
2268 err = ext4_add_nondir(handle, dentry, inode);
2257 if (!err && IS_DIRSYNC(dir)) 2269 if (!err && IS_DIRSYNC(dir))
2258 ext4_handle_sync(handle); 2270 ext4_handle_sync(handle);
2259 } 2271 }
@@ -2437,6 +2449,13 @@ retry:
2437 err = ext4_init_new_dir(handle, dir, inode); 2449 err = ext4_init_new_dir(handle, dir, inode);
2438 if (err) 2450 if (err)
2439 goto out_clear_inode; 2451 goto out_clear_inode;
2452#ifdef CONFIG_EXT4_FS_ENCRYPTION
2453 if (ext4_encrypted_inode(dir)) {
2454 err = ext4_inherit_context(dir, inode);
2455 if (err)
2456 goto out_clear_inode;
2457 }
2458#endif
2440 err = ext4_mark_inode_dirty(handle, inode); 2459 err = ext4_mark_inode_dirty(handle, inode);
2441 if (!err) 2460 if (!err)
2442 err = ext4_add_entry(handle, dentry, inode); 2461 err = ext4_add_entry(handle, dentry, inode);