mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
VFS: allow ->d_manage() to declare -EISDIR in rcu_walk mode.
In REF-walk mode, ->d_manage can return -EISDIR to indicate that the dentry is not really a mount trap (or even a mount point) and that any mounts or any DCACHE_NEED_AUTOMOUNT flag should be ignored. RCU-walk mode doesn't currently support this, so if there is a dentry with DCACHE_NEED_AUTOMOUNT set but which shouldn't be a mount-trap, lookup_fast() will always drop in REF-walk mode. With this patch, an -EISDIR from ->d_manage will always cause mounts and automounts to be ignored, both in REF-walk and RCU-walk. Bug-fixed-by: Dan Carpenter <[email protected]> Cc: Ian Kent <[email protected]> Signed-off-by: NeilBrown <[email protected]> Signed-off-by: Al Viro <[email protected]>
This commit is contained in:
parent
7c33d5972c
commit
b8faf035ea
2 changed files with 18 additions and 12 deletions
|
|
@ -1053,7 +1053,8 @@ struct dentry_operations {
|
|||
If the 'rcu_walk' parameter is true, then the caller is doing a
|
||||
pathwalk in RCU-walk mode. Sleeping is not permitted in this mode,
|
||||
and the caller can be asked to leave it and call again by returning
|
||||
-ECHILD.
|
||||
-ECHILD. -EISDIR may also be returned to tell pathwalk to
|
||||
ignore d_automount or any mounts.
|
||||
|
||||
This function is only used if DCACHE_MANAGE_TRANSIT is set on the
|
||||
dentry being transited from.
|
||||
|
|
|
|||
Loading…
Reference in a new issue