Commit 28a3a7eb authored by Eric Paris's avatar Eric Paris

audit: reimplement audit_trees using fsnotify rather than inotify

Simply switch audit_trees from using inotify to using fsnotify for it's
inode pinning and disappearing act information.
Signed-off-by: default avatarEric Paris <eparis@redhat.com>
parent 40554c3d
...@@ -62,8 +62,9 @@ ...@@ -62,8 +62,9 @@
/* listeners that hard code group numbers near the top */ /* listeners that hard code group numbers near the top */
#define DNOTIFY_GROUP_NUM UINT_MAX #define DNOTIFY_GROUP_NUM UINT_MAX
#define AUDIT_WATCH_GROUP_NUM (DNOTIFY_GROUP_NUM-1) #define AUDIT_WATCH_GROUP_NUM (DNOTIFY_GROUP_NUM-1)
#define INOTIFY_GROUP_NUM (AUDIT_WATCH_GROUP_NUM-1) #define AUDIT_TREE_GROUP_NUM (AUDIT_WATCH_GROUP_NUM-1)
#define INOTIFY_GROUP_NUM (AUDIT_TREE_GROUP_NUM-1)
struct fsnotify_group; struct fsnotify_group;
struct fsnotify_event; struct fsnotify_event;
......
...@@ -326,7 +326,7 @@ config AUDITSYSCALL ...@@ -326,7 +326,7 @@ config AUDITSYSCALL
config AUDIT_TREE config AUDIT_TREE
def_bool y def_bool y
depends on AUDITSYSCALL depends on AUDITSYSCALL
select INOTIFY select FSNOTIFY
menu "RCU Subsystem" menu "RCU Subsystem"
......
This diff is collapsed.
...@@ -1725,7 +1725,7 @@ static inline void handle_one(const struct inode *inode) ...@@ -1725,7 +1725,7 @@ static inline void handle_one(const struct inode *inode)
struct audit_tree_refs *p; struct audit_tree_refs *p;
struct audit_chunk *chunk; struct audit_chunk *chunk;
int count; int count;
if (likely(list_empty(&inode->inotify_watches))) if (likely(hlist_empty(&inode->i_fsnotify_mark_entries)))
return; return;
context = current->audit_context; context = current->audit_context;
p = context->trees; p = context->trees;
...@@ -1768,7 +1768,7 @@ static void handle_path(const struct dentry *dentry) ...@@ -1768,7 +1768,7 @@ static void handle_path(const struct dentry *dentry)
seq = read_seqbegin(&rename_lock); seq = read_seqbegin(&rename_lock);
for(;;) { for(;;) {
struct inode *inode = d->d_inode; struct inode *inode = d->d_inode;
if (inode && unlikely(!list_empty(&inode->inotify_watches))) { if (inode && unlikely(!hlist_empty(&inode->i_fsnotify_mark_entries))) {
struct audit_chunk *chunk; struct audit_chunk *chunk;
chunk = audit_tree_lookup(inode); chunk = audit_tree_lookup(inode);
if (chunk) { if (chunk) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment