projects
/
linux-block.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
d809daf
)
fanotify: mask out special event flags from ignored mask
author
Amir Goldstein
<amir73il@gmail.com>
Thu, 16 Jul 2020 08:42:13 +0000
(11:42 +0300)
committer
Jan Kara
<jack@suse.cz>
Mon, 27 Jul 2020 19:23:36 +0000
(21:23 +0200)
The special event flags (FAN_ONDIR, FAN_EVENT_ON_CHILD) never had
any meaning in ignored mask. Mask them out explicitly.
Link:
https://lore.kernel.org/r/20200716084230.30611-6-amir73il@gmail.com
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/notify/fanotify/fanotify_user.c
patch
|
blob
|
blame
|
history
diff --git
a/fs/notify/fanotify/fanotify_user.c
b/fs/notify/fanotify/fanotify_user.c
index 1e04caf8d6bafedca4131d659724af25671bd3d1..6d30beb320f36107435bfaa7a2ee7875b8be9506 100644
(file)
--- a/
fs/notify/fanotify/fanotify_user.c
+++ b/
fs/notify/fanotify/fanotify_user.c
@@
-1040,6
+1040,7
@@
static int do_fanotify_mark(int fanotify_fd, unsigned int flags, __u64 mask,
__kernel_fsid_t __fsid, *fsid = NULL;
u32 valid_mask = FANOTIFY_EVENTS | FANOTIFY_EVENT_FLAGS;
unsigned int mark_type = flags & FANOTIFY_MARK_TYPE_BITS;
+ bool ignored = flags & FAN_MARK_IGNORED_MASK;
unsigned int obj_type, fid_mode;
int ret;
@@
-1087,6
+1088,10
@@
static int do_fanotify_mark(int fanotify_fd, unsigned int flags, __u64 mask,
if (mask & ~valid_mask)
return -EINVAL;
+ /* Event flags (ONDIR, ON_CHILD) are meaningless in ignored mask */
+ if (ignored)
+ mask &= ~FANOTIFY_EVENT_FLAGS;
+
f = fdget(fanotify_fd);
if (unlikely(!f.file))
return -EBADF;