aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/auditsc.c
diff options
context:
space:
mode:
authorSteve Grubb <sgrubb@redhat.com>2006-04-11 08:50:56 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2006-05-01 06:10:07 -0400
commit2ad312d2093ae506ae0fa184d8d026b559083087 (patch)
tree890337ebca18ab31546b84a9831fb9c337e8e272 /kernel/auditsc.c
parent073115d6b29c7910feaa08241c6484637f5ca958 (diff)
[PATCH] Audit Filter Performance
While testing the watch performance, I noticed that selinux_task_ctxid() was creeping into the results more than it should. Investigation showed that the function call was being called whether it was needed or not. The below patch fixes this. Signed-off-by: Steve Grubb <sgrubb@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'kernel/auditsc.c')
-rw-r--r--kernel/auditsc.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/auditsc.c b/kernel/auditsc.c
index a300736ee037..1c03a4ed1b27 100644
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
@@ -168,11 +168,9 @@ static int audit_filter_rules(struct task_struct *tsk,
168 struct audit_context *ctx, 168 struct audit_context *ctx,
169 enum audit_state *state) 169 enum audit_state *state)
170{ 170{
171 int i, j; 171 int i, j, need_sid = 1;
172 u32 sid; 172 u32 sid;
173 173
174 selinux_task_ctxid(tsk, &sid);
175
176 for (i = 0; i < rule->field_count; i++) { 174 for (i = 0; i < rule->field_count; i++) {
177 struct audit_field *f = &rule->fields[i]; 175 struct audit_field *f = &rule->fields[i];
178 int result = 0; 176 int result = 0;
@@ -271,11 +269,16 @@ static int audit_filter_rules(struct task_struct *tsk,
271 match for now to avoid losing information that 269 match for now to avoid losing information that
272 may be wanted. An error message will also be 270 may be wanted. An error message will also be
273 logged upon error */ 271 logged upon error */
274 if (f->se_rule) 272 if (f->se_rule) {
273 if (need_sid) {
274 selinux_task_ctxid(tsk, &sid);
275 need_sid = 0;
276 }
275 result = selinux_audit_rule_match(sid, f->type, 277 result = selinux_audit_rule_match(sid, f->type,
276 f->op, 278 f->op,
277 f->se_rule, 279 f->se_rule,
278 ctx); 280 ctx);
281 }
279 break; 282 break;
280 case AUDIT_ARG0: 283 case AUDIT_ARG0:
281 case AUDIT_ARG1: 284 case AUDIT_ARG1: