Re: FAN_OPEN_EXEC event and ignore mask

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

 



[Change the subject and add fsdevel to CC]

On Tue, Oct 30, 2018 at 2:27 AM Matthew Bobrowski
<mbobrowski@xxxxxxxxxxxxxx> wrote:
>
[...]
> Then I concluded that it doesn't have to be event mask specific i.e.
> FAN_OPEN_EXEC. Irrespective of what the event_mask value actually is, if
> it contains a flag that has also been set within marks_ignored_mask, then
> the event should *not* be sent through to the user:
>
> if (event_mask & marks_ignored_mask)
>         return 0;
>
> I think what Amir has proposed here is also correct and the cleanest
> implementation to achieve what we want.
>

My proposal had a bug w.r.t handling of FS_EVENT_ON_CHILD
in ignore mask. I fixed it and pushed to branch:
https://github.com/amir73il/linux/commits/fanotify_ignore
In the first commit ("fanotify: fix handling of FS_EVENT_ON_CHILD
sub-directory events")
I have made a claim about an existing bug -
that claim still needs to be proven by a test case.
it could be there is no bug and this is just an optimization.

Man page should be revised to clarify the currently expected behavior:
FAN_EVENT_ON_CHILD ...
  The flag has no effect when marking mounts
+ or filesystems and has no effect when set in ignore mask

Please include that change in your man page draft for new
ignore mask interpretations.

> >
> > Nothing will need to be change for FS_OPEN_EXEC with this change
> > applied to implement semantics #2 above.
> > I only hope this change is correct... (it did pass existing and new ltp tests)
> >
>
> I also tested this on my side the using existing and newly proposed LTP
> test cases, all tests had passed. This change also covers the last test
> that I defined in fanotify12 where the mark_mask = FAN_OPEN_EXEC and
> ignore_mask = FAN_OPEN. Prior to this change, an event for FAN_OPEN_EXEC
> would still slip through despite being a subtype of an open, which
> shouldn't be the case. With this change implemented, NO events are sent
> through, which is exactly what is expected.
>
> > >   Pros: FAN_OPEN_NOEXEC easy to do using ignore masks.
> > >   Cons: Semantics is IMO somewhat difficult to explain in the manpage.
> > >         Probably we'd need to really explain that FAN_OPEN is really a
> > >         compound of FS_OPEN_NOEXEC and FS_OPEN_EXEC.
> > >
> > > So overall I think the semantics from 2) is more useful. But I'd start with
> > > manpage properly explaining the semantics and interactions between FAN_OPEN
> > > and FAN_OPEN_EXEC. If that can be written so that user's head does not
> > > spin, I think the implementation can be done in a reasonably simple way as
> > > well. And I'm really sorry for leading you in circles Matthew...
> > >
> >
> > Agree to the "man page criteria"
>
> This is fine. I can document the FAN_OPEN and FAN_OPEN_EXEC semantics
> really well, whenever required. But, I'd like to agree upon the solution
> and have that finalised before I shift my focus on documentation.
>

The idea of "document first" is that if you cannot come up with simple man page
we are not going to implement those semantics, because they will be unusable.

So I agree with Jan. Please take a swing at man page change.
It can be a very rough draft, you can send a link to github, so long
as we can see
that a simple man page is "doable".

Thanks,
Amir.



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux