From: Daniel Rosenberg Date: Tue, 23 Jan 2018 23:02:50 +0000 (-0800) Subject: ANDROID: fsnotify: Notify lower fs of open X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=21de4c6b9603359cb92feb5004728f042ee38582;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git 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. Change-Id: I2b1739e068afbaf5eb39950516072bff8345ebfe Signed-off-by: Daniel Rosenberg Bug: 70706497 --- diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h index bdaf22582f6e..4636b8f8893e 100644 --- a/include/linux/fsnotify.h +++ b/include/linux/fsnotify.h @@ -214,12 +214,19 @@ static inline void fsnotify_modify(struct file *file) static inline void fsnotify_open(struct file *file) { const struct path *path = &file->f_path; + struct path lower_path; struct inode *inode = path->dentry->d_inode; __u32 mask = FS_OPEN; if (S_ISDIR(inode->i_mode)) mask |= FS_ISDIR; + if (path->dentry->d_op && path->dentry->d_op->d_canonical_path) { + path->dentry->d_op->d_canonical_path(path, &lower_path); + fsnotify_parent(&lower_path, NULL, mask); + fsnotify(lower_path.dentry->d_inode, mask, &lower_path, FSNOTIFY_EVENT_PATH, NULL, 0); + path_put(&lower_path); + } fsnotify_parent(path, NULL, mask); fsnotify(inode, mask, path, FSNOTIFY_EVENT_PATH, NULL, 0); }