diff options
| -rw-r--r-- | fs/ext4/namei.c | 21 |
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); |
