ANDROID: sdcardfs: Use filesystem specific hash
authorDaniel Rosenberg <drosen@google.com>
Fri, 21 Apr 2017 01:05:02 +0000 (18:05 -0700)
committerAmit Pundir <amit.pundir@linaro.org>
Mon, 1 May 2017 09:58:32 +0000 (15:28 +0530)
We weren't accounting for FS specific hash functions,
causing us to miss negative dentries for any FS that
had one.

Similar to a patch from esdfs
commit 75bd25a9476d ("esdfs: support lower's own hash")

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

fs/sdcardfs/lookup.c

index a0f221501b4c5b30161cfc1485c0578ed5a25ff0..446ef4027ebcc289d7f8a270628a09a37215f193 100644 (file)
@@ -366,8 +366,13 @@ put_name:
        /* instatiate a new negative dentry */
        dname.name = name->name;
        dname.len = name->len;
-       dname.hash = full_name_hash(dname.name, dname.len);
-       lower_dentry = d_lookup(lower_dir_dentry, &dname);
+
+       /* See if the low-level filesystem might want
+        * to use its own hash
+        */
+       lower_dentry = d_hash_and_lookup(lower_dir_dentry, &dname);
+       if (IS_ERR(lower_dentry))
+               return lower_dentry;
        if (lower_dentry)
                goto setup_lower;