audit: use the mark in handler functions
audit now gets a mark in the should_send_event and handle_event
functions. Rather than look up the mark themselves audit should just use
the mark it was handed.
Signed-off-by: Eric Paris <eparis@redhat.com>
diff --git a/kernel/audit_watch.c b/kernel/audit_watch.c
index 4d5ea03..9173bcf 100644
--- a/kernel/audit_watch.c
+++ b/kernel/audit_watch.c
@@ -514,18 +514,10 @@
struct vfsmount *mnt, struct fsnotify_mark *mark,
__u32 mask, void *data, int data_type)
{
- struct fsnotify_mark *entry;
bool send;
- entry = fsnotify_find_inode_mark(group, inode);
- if (!entry)
- return false;
-
mask = (mask & ~FS_EVENT_ON_CHILD);
- send = (entry->mask & mask);
-
- /* find took a reference */
- fsnotify_put_mark(entry);
+ send = (mark->mask & mask);
return send;
}
@@ -540,11 +532,9 @@
const char *dname = event->file_name;
struct audit_parent *parent;
- BUG_ON(group != audit_watch_group);
+ parent = container_of(mark, struct audit_parent, mark);
- parent = audit_find_parent(event->to_tell);
- if (unlikely(!parent))
- return 0;
+ BUG_ON(group != audit_watch_group);
switch (event->data_type) {
case (FSNOTIFY_EVENT_FILE):
@@ -565,10 +555,6 @@
audit_update_watch(parent, dname, (dev_t)-1, (unsigned long)-1, 1);
else if (mask & (FS_DELETE_SELF|FS_UNMOUNT|FS_MOVE_SELF))
audit_remove_parent_watches(parent);
- /* moved put_inotify_watch to freeing mark */
-
- /* matched the ref taken by audit_find_parent */
- audit_put_parent(parent);
return 0;
}