From: Daniel Rosenberg Date: Fri, 21 Apr 2017 01:21:50 +0000 (-0700) Subject: Revert "Revert "Android: sdcardfs: Don't do d_add for lower fs"" X-Git-Tag: release-20171130_firefly~4^2~100^2~129 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=28002808ae1cb2967187c9e70a318e31dfc7ed72;p=firefly-linux-kernel-4.4.55.git Revert "Revert "Android: sdcardfs: Don't do d_add for lower fs"" This reverts commit ffa75fdb9c408f49b9622b6d55752ed99ff61488. Turns out we just needed the right hash. Signed-off-by: Daniel Rosenberg Bug: 37231161 Change-Id: I6a6de7f7df99ad42b20fa062913b219f64020c31 --- diff --git a/fs/sdcardfs/lookup.c b/fs/sdcardfs/lookup.c index 446ef4027ebc..509d5fbcb472 100644 --- a/fs/sdcardfs/lookup.c +++ b/fs/sdcardfs/lookup.c @@ -373,17 +373,15 @@ put_name: lower_dentry = d_hash_and_lookup(lower_dir_dentry, &dname); if (IS_ERR(lower_dentry)) return lower_dentry; - if (lower_dentry) - goto setup_lower; - - lower_dentry = d_alloc(lower_dir_dentry, &dname); if (!lower_dentry) { - err = -ENOMEM; + /* We called vfs_path_lookup earlier, and did not get a negative + * dentry then. Don't confuse the lower filesystem by forcing + * one on it now... + */ + err = -ENOENT; goto out; } - d_add(lower_dentry, NULL); /* instantiate and hash */ -setup_lower: lower_path.dentry = lower_dentry; lower_path.mnt = mntget(lower_dir_mnt); sdcardfs_set_lower_path(dentry, &lower_path);