提交 699c1868 编写于 作者: R Richard Guy Briggs 提交者: Paul Moore

audit: purge unnecessary list_empty calls

The original conditions that led to the use of list_empty() to optimize
list_for_each_entry_rcu() in auditfilter.c and auditsc.c code have been
removed without removing the list_empty() call, but this code example
has been copied several times.  Remove the unnecessary list_empty()
calls.

Please see upstream github issue
https://github.com/linux-audit/audit-kernel/issues/112Signed-off-by: NRichard Guy Briggs <rgb@redhat.com>
Signed-off-by: NPaul Moore <paul@paul-moore.com>
上级 a1aa08a0
...@@ -1315,8 +1315,6 @@ int audit_filter(int msgtype, unsigned int listtype) ...@@ -1315,8 +1315,6 @@ int audit_filter(int msgtype, unsigned int listtype)
int ret = 1; /* Audit by default */ int ret = 1; /* Audit by default */
rcu_read_lock(); rcu_read_lock();
if (list_empty(&audit_filter_list[listtype]))
goto unlock_and_return;
list_for_each_entry_rcu(e, &audit_filter_list[listtype], list) { list_for_each_entry_rcu(e, &audit_filter_list[listtype], list) {
int i, result = 0; int i, result = 0;
......
...@@ -771,15 +771,13 @@ static enum audit_state audit_filter_syscall(struct task_struct *tsk, ...@@ -771,15 +771,13 @@ static enum audit_state audit_filter_syscall(struct task_struct *tsk,
return AUDIT_DISABLED; return AUDIT_DISABLED;
rcu_read_lock(); rcu_read_lock();
if (!list_empty(list)) { list_for_each_entry_rcu(e, list, list) {
list_for_each_entry_rcu(e, list, list) { if (audit_in_mask(&e->rule, ctx->major) &&
if (audit_in_mask(&e->rule, ctx->major) && audit_filter_rules(tsk, &e->rule, ctx, NULL,
audit_filter_rules(tsk, &e->rule, ctx, NULL, &state, false)) {
&state, false)) { rcu_read_unlock();
rcu_read_unlock(); ctx->current_state = state;
ctx->current_state = state; return state;
return state;
}
} }
} }
rcu_read_unlock(); rcu_read_unlock();
...@@ -798,9 +796,6 @@ static int audit_filter_inode_name(struct task_struct *tsk, ...@@ -798,9 +796,6 @@ static int audit_filter_inode_name(struct task_struct *tsk,
struct audit_entry *e; struct audit_entry *e;
enum audit_state state; enum audit_state state;
if (list_empty(list))
return 0;
list_for_each_entry_rcu(e, list, list) { list_for_each_entry_rcu(e, list, list) {
if (audit_in_mask(&e->rule, ctx->major) && if (audit_in_mask(&e->rule, ctx->major) &&
audit_filter_rules(tsk, &e->rule, ctx, n, &state, false)) { audit_filter_rules(tsk, &e->rule, ctx, n, &state, false)) {
...@@ -808,7 +803,6 @@ static int audit_filter_inode_name(struct task_struct *tsk, ...@@ -808,7 +803,6 @@ static int audit_filter_inode_name(struct task_struct *tsk,
return 1; return 1;
} }
} }
return 0; return 0;
} }
...@@ -1945,18 +1939,16 @@ void __audit_inode(struct filename *name, const struct dentry *dentry, ...@@ -1945,18 +1939,16 @@ void __audit_inode(struct filename *name, const struct dentry *dentry,
return; return;
rcu_read_lock(); rcu_read_lock();
if (!list_empty(list)) { list_for_each_entry_rcu(e, list, list) {
list_for_each_entry_rcu(e, list, list) { for (i = 0; i < e->rule.field_count; i++) {
for (i = 0; i < e->rule.field_count; i++) { struct audit_field *f = &e->rule.fields[i];
struct audit_field *f = &e->rule.fields[i];
if (f->type == AUDIT_FSTYPE
if (f->type == AUDIT_FSTYPE && audit_comparator(inode->i_sb->s_magic,
&& audit_comparator(inode->i_sb->s_magic, f->op, f->val)
f->op, f->val) && e->rule.action == AUDIT_NEVER) {
&& e->rule.action == AUDIT_NEVER) { rcu_read_unlock();
rcu_read_unlock(); return;
return;
}
} }
} }
} }
...@@ -2065,18 +2057,16 @@ void __audit_inode_child(struct inode *parent, ...@@ -2065,18 +2057,16 @@ void __audit_inode_child(struct inode *parent,
return; return;
rcu_read_lock(); rcu_read_lock();
if (!list_empty(list)) { list_for_each_entry_rcu(e, list, list) {
list_for_each_entry_rcu(e, list, list) { for (i = 0; i < e->rule.field_count; i++) {
for (i = 0; i < e->rule.field_count; i++) { struct audit_field *f = &e->rule.fields[i];
struct audit_field *f = &e->rule.fields[i];
if (f->type == AUDIT_FSTYPE
if (f->type == AUDIT_FSTYPE && audit_comparator(parent->i_sb->s_magic,
&& audit_comparator(parent->i_sb->s_magic, f->op, f->val)
f->op, f->val) && e->rule.action == AUDIT_NEVER) {
&& e->rule.action == AUDIT_NEVER) { rcu_read_unlock();
rcu_read_unlock(); return;
return;
}
} }
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册