lkml.org 
[lkml]   [2006]   [Feb]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH] inotify: fix one-shot support
    Date
    Hi Robert,
    hi John,

    just saw this commit.

    On Wednesday 08 February 2006 02:05, you wrote:
    > tree 5b5af4e03e627b66a9f37d25dd370a145ec72438
    > parent 8e08b756869eeb08ace17ad64c2a8cb97b18e856
    > author Robert Love <rml@novell.com> Wed, 08 Feb 2006 04:58:45 -0800
    > committer Linus Torvalds <torvalds@g5.osdl.org> Wed, 08 Feb 2006 08:12:33 -0800
    >
    > [PATCH] inotify: fix one-shot support
    >
    > Fix one-shot support in inotify. We currently drop the IN_ONESHOT flag
    > during watch addition. Fix is to not do that.

    Yes, but now you can add a watch without any event attached.
    This would revert the original sense of the test.

    > Signed-off-by: Robert Love <rml@novell.com>
    > Cc: John McCutchan <ttb@tentacle.dhs.org>
    > Signed-off-by: Andrew Morton <akpm@osdl.org>
    > Signed-off-by: Linus Torvalds <torvalds@osdl.org>
    >
    > fs/inotify.c | 2 +-
    > 1 files changed, 1 insertion(+), 1 deletion(-)
    >
    > diff --git a/fs/inotify.c b/fs/inotify.c
    > index 878ccca..3041503 100644
    > --- a/fs/inotify.c
    > +++ b/fs/inotify.c
    > @@ -967,7 +967,7 @@ asmlinkage long sys_inotify_add_watch(in
    > mask_add = 1;
    >
    > /* don't let user-space set invalid bits: we don't want flags set */
    > - mask &= IN_ALL_EVENTS;
    > + mask &= IN_ALL_EVENTS | IN_ONESHOT;
    > if (unlikely(!mask)) {
    > ret = -EINVAL;
    > goto out;

    See, now you can just pass IN_ONESHOT behavior flag without any
    events to shoot at, which you couldn't do before. But this makes only
    sense, if we would like to set a multi-shot mask to one-shot now.

    Does this transition (multi shot to single shot)makes sense at all?
    Is it race-free to allow this?.

    So my suggested fix instead of yours would be:

    /* don't let user-space set invalid bits: we don't want flags set */
    mask &= IN_ALL_EVENTS | IN_ONESHOT;
    if (unlikely((mask & IN_ALL_EVENTS) == 0 && !mask_add)) {
    ret = -EINVAL;
    goto out;
    }

    Would you like a patch on top of the one submitted by you?


    Regards

    Ingo Oeser

    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2006-02-08 08:54    [W:0.033 / U:2.708 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site