ANDROID: sdcardfs: Fix incorrect hash
authorDaniel Rosenberg <drosen@google.com>
Wed, 15 Feb 2017 04:47:17 +0000 (20:47 -0800)
committerDaniel Rosenberg <drosen@google.com>
Tue, 30 Jan 2018 03:40:04 +0000 (19:40 -0800)
This adds back the hash calculation removed as part of
the previous patch, as it is in fact necessary.

Signed-off-by: Daniel Rosenberg <drosen@google.com>
Bug: 35307857
Change-Id: Ie607332bcf2c5d2efdf924e4060ef3f576bf25dc

fs/sdcardfs/lookup.c

index 0d2caddd8510d7738fd8489f50cc033206c02c9c..ae8e9b519e1683f65c5957cf6e5323bdab986f77 100644 (file)
@@ -221,6 +221,7 @@ static struct dentry *__sdcardfs_lookup(struct dentry *dentry,
        struct dentry *lower_dentry;
        const struct qstr *name;
        struct path lower_path;
+       struct qstr dname;
        struct sdcardfs_sb_info *sbi;
 
        sbi = SDCARDFS_SB(dentry->d_sb);
@@ -306,11 +307,14 @@ static struct dentry *__sdcardfs_lookup(struct dentry *dentry,
                goto out;
 
        /* instatiate a new negative dentry */
-       lower_dentry = d_lookup(lower_dir_dentry, name);
+       dname.name = name->name;
+       dname.len = name->len;
+       dname.hash = full_name_hash(lower_dir_dentry, dname.name, dname.len);
+       lower_dentry = d_lookup(lower_dir_dentry, &dname);
        if (lower_dentry)
                goto setup_lower;
 
-       lower_dentry = d_alloc(lower_dir_dentry, name);
+       lower_dentry = d_alloc(lower_dir_dentry, &dname);
        if (!lower_dentry) {
                err = -ENOMEM;
                goto out;