diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2015-04-27 17:51:30 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2015-05-10 22:18:20 -0400 |
commit | a7a67e8a089e25ef48ab01dd34ce82678ef70f11 (patch) | |
tree | 13ab26f2255e09f322da5af528c47fd8c547db90 /fs/ext4/namei.c | |
parent | 3188b2955de3d01949ec54eb2c9ff1ecaa0a752d (diff) | |
download | op-kernel-dev-a7a67e8a089e25ef48ab01dd34ce82678ef70f11.zip op-kernel-dev-a7a67e8a089e25ef48ab01dd34ce82678ef70f11.tar.gz |
ext4: split inode_operations for encrypted symlinks off the rest
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/ext4/namei.c')
-rw-r--r-- | fs/ext4/namei.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index 814f3beb..39f8e65 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c @@ -3206,10 +3206,12 @@ static int ext4_symlink(struct inode *dir, goto err_drop_inode; sd->len = cpu_to_le16(ostr.len); disk_link.name = (char *) sd; + inode->i_op = &ext4_encrypted_symlink_inode_operations; } if ((disk_link.len > EXT4_N_BLOCKS * 4)) { - inode->i_op = &ext4_symlink_inode_operations; + if (!encryption_required) + inode->i_op = &ext4_symlink_inode_operations; ext4_set_aops(inode); /* * We cannot call page_symlink() with transaction started @@ -3249,9 +3251,8 @@ static int ext4_symlink(struct inode *dir, } else { /* clear the extent format for fast symlink */ ext4_clear_inode_flag(inode, EXT4_INODE_EXTENTS); - inode->i_op = encryption_required ? - &ext4_symlink_inode_operations : - &ext4_fast_symlink_inode_operations; + if (!encryption_required) + inode->i_op = &ext4_fast_symlink_inode_operations; memcpy((char *)&EXT4_I(inode)->i_data, disk_link.name, disk_link.len); inode->i_size = disk_link.len - 1; |