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: Daniel Rosenberg <drosen@google.com> Bug: 37231161 Change-Id: Id2a9708dfa75e1c22f89915c529789caadd2ca4b
This commit is contained in:
parent
6f28e6ebcc
commit
e92f72194d
1 changed files with 5 additions and 7 deletions
|
@ -368,17 +368,15 @@ 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) {
|
||||
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);
|
||||
|
|
Loading…
Add table
Reference in a new issue