ANDROID: fsnotify: Notify lower fs of open
If the filesystem being watched supports d_canonical_path,
notify the lower filesystem of the open as well.
Note: I've changed the Change-Id since this was previously present, but
disappeared at some point.
Fixes: f37e05049b ("ANDROID: vfs: d_canonical_path for stacked FS")
Test: atest CtsOsTestCases:android.os.cts.FileObserverTest
Bug: 70706497
Change-Id: I7bf5c2bb2d6da18c831a8ece9ad9cf9ef3661b6b
Signed-off-by: Daniel Rosenberg <drosen@google.com>
Signed-off-by: Paul Lawrence <paullawrence@google.com>
Signed-off-by: Alessio Balsini <balsini@google.com>
(cherry picked from commit b289d1706b672f064bbe04c3a8bfb1a5e8ac0923)
This commit is contained in:
@@ -128,6 +128,25 @@ static inline int fsnotify_file(struct file *file, __u32 mask)
|
||||
FSNOTIFY_PRIO_CONTENT))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Open calls notify early on, so lower file system must be notified
|
||||
*/
|
||||
if (mask & FS_OPEN) {
|
||||
if (path->dentry->d_op &&
|
||||
path->dentry->d_op->d_canonical_path) {
|
||||
struct path lower_path;
|
||||
int ret;
|
||||
|
||||
path->dentry->d_op->d_canonical_path(path, &lower_path);
|
||||
ret = fsnotify_parent(lower_path.dentry, mask,
|
||||
&lower_path, FSNOTIFY_EVENT_PATH);
|
||||
path_put(&lower_path);
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return fsnotify_parent(path->dentry, mask, path, FSNOTIFY_EVENT_PATH);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user