]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
fsnotify: compile out fsnotify permission hooks if !FANOTIFY_ACCESS_PERMISSIONS
authorAmir Goldstein <amir73il@gmail.com>
Tue, 9 Jan 2024 18:22:45 +0000 (20:22 +0200)
committerChristian Brauner <brauner@kernel.org>
Fri, 12 Jan 2024 14:34:50 +0000 (15:34 +0100)
The depency of FANOTIFY_ACCESS_PERMISSIONS on SECURITY made sure that
the fsnotify permission hooks were never called when SECURITY was
disabled.

Moving the fsnotify permission hook out of the secutiy hook broke that
optimisation.

Reported-and-tested-by: Jens Axboe <axboe@kernel.dk>
Closes: https://lore.kernel.org/linux-fsdevel/53682ece-f0e7-48de-9a1c-879ee34b0449@kernel.dk/
Fixes: d9e5d31084b0 ("fsnotify: optionally pass access range in file permission hooks")
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Link: https://lore.kernel.org/r/20240109182245.38884-1-amir73il@gmail.com
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Christian Brauner <brauner@kernel.org>
include/linux/fsnotify.h

index 11e6434b8e714a1d03d7ea2807c795513916b58e..8300a52869887a30388a6d8bb360b008340dff97 100644 (file)
@@ -100,6 +100,7 @@ static inline int fsnotify_file(struct file *file, __u32 mask)
        return fsnotify_parent(path->dentry, mask, path, FSNOTIFY_EVENT_PATH);
 }
 
        return fsnotify_parent(path->dentry, mask, path, FSNOTIFY_EVENT_PATH);
 }
 
+#ifdef CONFIG_FANOTIFY_ACCESS_PERMISSIONS
 /*
  * fsnotify_file_area_perm - permission hook before access to file range
  */
 /*
  * fsnotify_file_area_perm - permission hook before access to file range
  */
@@ -145,6 +146,24 @@ static inline int fsnotify_open_perm(struct file *file)
        return fsnotify_file(file, FS_OPEN_PERM);
 }
 
        return fsnotify_file(file, FS_OPEN_PERM);
 }
 
+#else
+static inline int fsnotify_file_area_perm(struct file *file, int perm_mask,
+                                         const loff_t *ppos, size_t count)
+{
+       return 0;
+}
+
+static inline int fsnotify_file_perm(struct file *file, int perm_mask)
+{
+       return 0;
+}
+
+static inline int fsnotify_open_perm(struct file *file)
+{
+       return 0;
+}
+#endif
+
 /*
  * fsnotify_link_count - inode's link count changed
  */
 /*
  * fsnotify_link_count - inode's link count changed
  */