|
@@ -88,18 +88,17 @@ static int fanotify_get_response_from_access(struct fsnotify_group *group,
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
-static bool fanotify_should_send_event(struct fsnotify_group *group,
|
|
|
- struct inode *inode,
|
|
|
- struct fsnotify_mark *inode_mark,
|
|
|
+static bool fanotify_should_send_event(struct fsnotify_mark *inode_mark,
|
|
|
struct fsnotify_mark *vfsmnt_mark,
|
|
|
- __u32 event_mask, void *data, int data_type)
|
|
|
+ u32 event_mask,
|
|
|
+ void *data, int data_type)
|
|
|
{
|
|
|
__u32 marks_mask, marks_ignored_mask;
|
|
|
struct path *path = data;
|
|
|
|
|
|
- pr_debug("%s: group=%p inode=%p inode_mark=%p vfsmnt_mark=%p "
|
|
|
- "mask=%x data=%p data_type=%d\n", __func__, group, inode,
|
|
|
- inode_mark, vfsmnt_mark, event_mask, data, data_type);
|
|
|
+ pr_debug("%s: inode_mark=%p vfsmnt_mark=%p mask=%x data=%p"
|
|
|
+ " data_type=%d\n", __func__, inode_mark, vfsmnt_mark,
|
|
|
+ event_mask, data, data_type);
|
|
|
|
|
|
/* if we don't have enough info to send an event to userspace say no */
|
|
|
if (data_type != FSNOTIFY_EVENT_PATH)
|
|
@@ -163,6 +162,10 @@ static int fanotify_handle_event(struct fsnotify_group *group,
|
|
|
BUILD_BUG_ON(FAN_ACCESS_PERM != FS_ACCESS_PERM);
|
|
|
BUILD_BUG_ON(FAN_ONDIR != FS_ISDIR);
|
|
|
|
|
|
+ if (!fanotify_should_send_event(inode_mark, fanotify_mark, mask, data,
|
|
|
+ data_type))
|
|
|
+ return 0;
|
|
|
+
|
|
|
pr_debug("%s: group=%p inode=%p mask=%x\n", __func__, group, inode,
|
|
|
mask);
|
|
|
|
|
@@ -225,7 +228,6 @@ static void fanotify_free_event(struct fsnotify_event *fsn_event)
|
|
|
|
|
|
const struct fsnotify_ops fanotify_fsnotify_ops = {
|
|
|
.handle_event = fanotify_handle_event,
|
|
|
- .should_send_event = fanotify_should_send_event,
|
|
|
.free_group_priv = fanotify_free_group_priv,
|
|
|
.free_event = fanotify_free_event,
|
|
|
.freeing_mark = NULL,
|