fanotify: mask out special event flags from ignored mask
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>
This commit is contained in:
Родитель
d809daf1b6
Коммит
3ef8665366
|
@ -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;
|
||||
|
|
Загрузка…
Ссылка в новой задаче