diff options
author | Eric Paris <eparis@redhat.com> | 2010-10-28 17:21:59 -0400 |
---|---|---|
committer | Eric Paris <eparis@redhat.com> | 2010-10-28 17:22:16 -0400 |
commit | 192ca4d1941228e69c1fbeebab317725407e6e65 (patch) | |
tree | cff474f312a41b5ab4fbbf72a558675f377e1808 /fs/notify | |
parent | 8fcd65280abc4699510f1853ede31f43e8a3783a (diff) |
fanotify: do not recalculate the mask if the ignored mask changed
If fanotify sets a new bit in the ignored mask it will cause the generic
fsnotify layer to recalculate the real mask. This is stupid since we
didn't change that part.
Signed-off-by: Eric Paris <eparis@redhat.com>
Diffstat (limited to 'fs/notify')
-rw-r--r-- | fs/notify/fanotify/fanotify_user.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c index ff1a908c9708..fa71d5dfd102 100644 --- a/fs/notify/fanotify/fanotify_user.c +++ b/fs/notify/fanotify/fanotify_user.c | |||
@@ -558,15 +558,15 @@ static __u32 fanotify_mark_add_to_mask(struct fsnotify_mark *fsn_mark, | |||
558 | __u32 mask, | 558 | __u32 mask, |
559 | unsigned int flags) | 559 | unsigned int flags) |
560 | { | 560 | { |
561 | __u32 oldmask; | 561 | __u32 oldmask = -1; |
562 | 562 | ||
563 | spin_lock(&fsn_mark->lock); | 563 | spin_lock(&fsn_mark->lock); |
564 | if (!(flags & FAN_MARK_IGNORED_MASK)) { | 564 | if (!(flags & FAN_MARK_IGNORED_MASK)) { |
565 | oldmask = fsn_mark->mask; | 565 | oldmask = fsn_mark->mask; |
566 | fsnotify_set_mark_mask_locked(fsn_mark, (oldmask | mask)); | 566 | fsnotify_set_mark_mask_locked(fsn_mark, (oldmask | mask)); |
567 | } else { | 567 | } else { |
568 | oldmask = fsn_mark->ignored_mask; | 568 | __u32 tmask = fsn_mark->ignored_mask | mask; |
569 | fsnotify_set_mark_ignored_mask_locked(fsn_mark, (oldmask | mask)); | 569 | fsnotify_set_mark_ignored_mask_locked(fsn_mark, tmask); |
570 | if (flags & FAN_MARK_IGNORED_SURV_MODIFY) | 570 | if (flags & FAN_MARK_IGNORED_SURV_MODIFY) |
571 | fsn_mark->flags |= FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY; | 571 | fsn_mark->flags |= FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY; |
572 | } | 572 | } |