diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h index e9d2024473b0..e266cac311c3 100644 --- a/include/linux/fsnotify.h +++ b/include/linux/fsnotify.h @@ -62,7 +62,13 @@ static inline int fsnotify_perm(struct file *file, int mask) struct inode *inode = file_inode(file); __u32 fsnotify_mask = 0; - if (file->f_mode & FMODE_NONOTIFY) + /* + * FMODE_NONOTIFY are fds generated by fanotify itself which should not + * generate new events. We also don't want to generate events for + * FMODE_PATH fds (involves open & close events) as they are just + * handle creation / destruction events and not "real" file events. + */ + if (file->f_mode & (FMODE_NONOTIFY | FMODE_PATH)) return 0; if (!(mask & (MAY_READ | MAY_OPEN))) return 0;