aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorEric Paris <eparis@redhat.com>2010-10-28 17:21:59 -0400
committerEric Paris <eparis@redhat.com>2010-10-28 17:22:16 -0400
commit192ca4d1941228e69c1fbeebab317725407e6e65 (patch)
treecff474f312a41b5ab4fbbf72a558675f377e1808 /fs
parent8fcd65280abc4699510f1853ede31f43e8a3783a (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')
-rw-r--r--fs/notify/fanotify/fanotify_user.c6
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 }