Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit beead096 authored by Daniel Rosenberg's avatar Daniel Rosenberg Committed by Amit Pundir
Browse files

Android: sdcardfs: Don't do d_add for lower fs



For file based encryption, ext4 explicitly does not
create negative dentries for encrypted files. If you
force one over it, the decrypted file will be hidden
until the cache is cleared. Instead, just fail out.

Signed-off-by: default avatarDaniel Rosenberg <drosen@google.com>
Bug: 37231161
Change-Id: I6a6de7f7df99ad42b20fa062913b219f64020c31
parent 0bb58978
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -373,17 +373,15 @@ static struct dentry *__sdcardfs_lookup(struct dentry *dentry,
	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);