Re: [PATCH] fanotify: refine the validation checks on non-dir inode mask

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jun 28, 2022 at 08:22:28PM +0300, Amir Goldstein wrote:
> On Tue, Jun 28, 2022 at 12:27 PM Jan Kara <jack@xxxxxxx> wrote:
> >
> > On Mon 27-06-22 20:47:19, Amir Goldstein wrote:
> > > Commit ceaf69f8eadc ("fanotify: do not allow setting dirent events in
> > > mask of non-dir") added restrictions about setting dirent events in the
> > > mask of a non-dir inode mark, which does not make any sense.
> > >
> > > For backward compatibility, these restictions were added only to new
> > > (v5.17+) APIs.
> > >
> > > It also does not make any sense to set the flags FAN_EVENT_ON_CHILD or
> > > FAN_ONDIR in the mask of a non-dir inode.  Add these flags to the
> > > dir-only restriction of the new APIs as well.
> > >
> > > Move the check of the dir-only flags for new APIs into the helper
> > > fanotify_events_supported(), which is only called for FAN_MARK_ADD,
> > > because there is no need to error on an attempt to remove the dir-only
> > > flags from non-dir inode.
> > >
> > > Fixes: ceaf69f8eadc ("fanotify: do not allow setting dirent events in mask of non-dir")
> > > Link: https://lore.kernel.org/linux-fsdevel/20220627113224.kr2725conevh53u4@xxxxxxxxxx/
> > > Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx>
> >
> > Thanks! I've taken the patch to my tree.
> >
> >                                                                 Honza
> >
> > > [1] https://github.com/amir73il/ltp/commits/fan_enotdir
> > > [2] https://github.com/amir73il/man-pages/commits/fanotify_target_fid
> 
> Mathew and Jan,
> 
> Please let me know if I can keep your RVB on the man page patch for
> FAN_REPORT_TARGET_FID linked above.
> 
> The only change is an update to the ENOTDIR section which ends up like this:
> 
>        ENOTDIR
>               flags contains FAN_MARK_ONLYDIR, and dirfd and pathname
> do not specify a directory.
> 
>        ENOTDIR
>               mask contains FAN_RENAME, and dirfd and pathname do not
> specify a directory.
> 
>        ENOTDIR
>               flags  contains FAN_MARK_IGNORE, or the fanotify group
> was initialized with
>               flag FAN_REPORT_TARGET_FID, and mask contains directory
> entry modification
>               events (e.g., FAN_CREATE, FAN_DELETE), or directory event flags
>               (e.g., FAN_ONDIR, FAN_EVENT_ON_CHILD),
>               and dirfd and pathname do not specify a directory.

Sorry for the delay. This looks fine to me.

/M



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux