summaryrefslogtreecommitdiff
path: root/fs/f2fs
diff options
context:
space:
mode:
authorShuoran Liu <liushuoran@huawei.com>2016-08-25 15:42:09 +0300
committerJaegeuk Kim <jaegeuk@kernel.org>2016-08-30 04:31:16 +0300
commit5d2b42ede71c9da0bf4248fd2d409918fb065b5f (patch)
tree49b53989cc6dbf8f284df35dc07d0587ce643511 /fs/f2fs
parentdfd02e4de1c5f40c268984254045d388ab0c3e74 (diff)
downloadlinux-5d2b42ede71c9da0bf4248fd2d409918fb065b5f.tar.xz
f2fs: fix a bug when using namehash to locate dentry bucket
In the following scenario, 1) we don't have the key and doing a lookup for encrypted file, 2) and the encrypted filename is big name we should use fname->hash as name hash value instead of what is calculated by fname->disk_name. Because in such case, fname->disk_name is empty. Signed-off-by: Shuoran Liu <liushuoran@huawei.com> Acked-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs')
-rw-r--r--fs/f2fs/dir.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c
index 9054aeac8015..b3e6f7feadc9 100644
--- a/fs/f2fs/dir.c
+++ b/fs/f2fs/dir.c
@@ -172,7 +172,10 @@ static struct f2fs_dir_entry *find_in_level(struct inode *dir,
int max_slots;
f2fs_hash_t namehash;
- namehash = f2fs_dentry_hash(&name);
+ if(fname->hash)
+ namehash = cpu_to_le32(fname->hash);
+ else
+ namehash = f2fs_dentry_hash(&name);
nbucket = dir_buckets(level, F2FS_I(dir)->i_dir_level);
nblock = bucket_blocks(level);