summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorDaniel Rosenberg <drosen@google.com>2017-04-20 12:13:31 -0700
committerDaniel Rosenberg <drosen@google.com>2017-04-20 12:14:00 -0700
commit53491d941217d00fdddda6b8b755ced36676f079 (patch)
treecffa053005e9466fb2833930e178175f564d1988 /fs
parent0ed8679d0dbb02598c60cd4bd933f911bd636d01 (diff)
Revert "Android: sdcardfs: Don't do d_add for lower fs"
This reverts commit e92f72194da2e690d85fc736661d3f0d96825c57. This change caused issues for sdcardfs on top of vfat Signed-off-by: Daniel Rosenberg <drosen@google.com> Change-Id: Ife2ac6d9af40e4ddb95b7261e1dad4d7817e3779
Diffstat (limited to 'fs')
-rw-r--r--fs/sdcardfs/lookup.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/fs/sdcardfs/lookup.c b/fs/sdcardfs/lookup.c
index 08f62fb3e075..a0f221501b4c 100644
--- a/fs/sdcardfs/lookup.c
+++ b/fs/sdcardfs/lookup.c
@@ -368,15 +368,17 @@ put_name:
dname.len = name->len;
dname.hash = full_name_hash(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, &dname);
if (!lower_dentry) {
- /* 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;
+ err = -ENOMEM;
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);