Thread (5 messages) flat view 5 messages, 3 authors, 2022-07-02

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

From: Matthew Bobrowski <hidden>
Date: 2022-07-02 05:59:18
Also in: linux-fsdevel

On Tue, Jun 28, 2022 at 08:22:28PM +0300, Amir Goldstein wrote:
On Tue, Jun 28, 2022 at 12:27 PM Jan Kara [off-list ref] wrote:
quoted
On Mon 27-06-22 20:47:19, Amir Goldstein wrote:
quoted
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@quack3.lan/ (local)
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Thanks! I've taken the patch to my tree.

                                                                Honza
quoted
[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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help