summaryrefslogtreecommitdiff
path: root/fs/open.c
diff options
context:
space:
mode:
authorThomas Zimmermann <tzimmermann@suse.de>2025-02-18 09:43:43 +0300
committerThomas Zimmermann <tzimmermann@suse.de>2025-02-18 09:43:43 +0300
commit8bd1a8e7572c1012b19e4f57e2f49451820167ef (patch)
treed3e324f78d3b3bb7cf244be9c09ee463afd0ff7e /fs/open.c
parentb296955b3a740ecc8b3b08e34fd64f1ceabb8fb4 (diff)
parent0ed1356af8f629ae807963b7db4e501e3b580bc2 (diff)
downloadlinux-8bd1a8e7572c1012b19e4f57e2f49451820167ef.tar.xz
Merge drm/drm-next into drm-misc-next
Backmerging to get bugfixes from v6.14-rc2. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Diffstat (limited to 'fs/open.c')
-rw-r--r--fs/open.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/fs/open.c b/fs/open.c
index 932e5a6de63b..1be20de9f283 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -905,7 +905,8 @@ static int do_dentry_open(struct file *f,
f->f_sb_err = file_sample_sb_err(f);
if (unlikely(f->f_flags & O_PATH)) {
- f->f_mode = FMODE_PATH | FMODE_OPENED | FMODE_NONOTIFY;
+ f->f_mode = FMODE_PATH | FMODE_OPENED;
+ file_set_fsnotify_mode(f, FMODE_NONOTIFY);
f->f_op = &empty_fops;
return 0;
}
@@ -935,10 +936,10 @@ static int do_dentry_open(struct file *f,
/*
* Set FMODE_NONOTIFY_* bits according to existing permission watches.
- * If FMODE_NONOTIFY was already set for an fanotify fd, this doesn't
- * change anything.
+ * If FMODE_NONOTIFY mode was already set for an fanotify fd or for a
+ * pseudo file, this call will not change the mode.
*/
- file_set_fsnotify_mode(f);
+ file_set_fsnotify_mode_from_watchers(f);
error = fsnotify_open_perm(f);
if (error)
goto cleanup_all;
@@ -1122,7 +1123,7 @@ struct file *dentry_open_nonotify(const struct path *path, int flags,
if (!IS_ERR(f)) {
int error;
- f->f_mode |= FMODE_NONOTIFY;
+ file_set_fsnotify_mode(f, FMODE_NONOTIFY);
error = vfs_open(path, f);
if (error) {
fput(f);