aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-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);