diff options
author | Richard Guy Briggs <rgb@redhat.com> | 2014-10-03 04:05:19 +0200 |
---|---|---|
committer | Eric Paris <eparis@redhat.com> | 2014-10-10 21:07:58 +0200 |
commit | e85322d21cfebeac64f58a204e9adc0bc5c1e46f (patch) | |
tree | 9f7b9e1e1050697c0b474a8dfd969ed5fb69d29e | |
parent | audit: WARN if audit_rule_change called illegally (diff) | |
download | linux-e85322d21cfebeac64f58a204e9adc0bc5c1e46f.tar.xz linux-e85322d21cfebeac64f58a204e9adc0bc5c1e46f.zip |
audit: cull redundancy in audit_rule_change
Re-factor audit_rule_change() to reduce the amount of code redundancy and
simplify the logic.
Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
Signed-off-by: Eric Paris <eparis@redhat.com>
-rw-r--r-- | kernel/auditfilter.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c index 4419d1fbcad1..d214cd073a58 100644 --- a/kernel/auditfilter.c +++ b/kernel/auditfilter.c @@ -1064,31 +1064,27 @@ int audit_rule_change(int type, __u32 portid, int seq, void *data, int err = 0; struct audit_entry *entry; + entry = audit_data_to_entry(data, datasz); + if (IS_ERR(entry)) + return PTR_ERR(entry); + switch (type) { case AUDIT_ADD_RULE: - entry = audit_data_to_entry(data, datasz); - if (IS_ERR(entry)) - return PTR_ERR(entry); - err = audit_add_rule(entry); audit_log_rule_change("add_rule", &entry->rule, !err); - if (err) - audit_free_rule(entry); break; case AUDIT_DEL_RULE: - entry = audit_data_to_entry(data, datasz); - if (IS_ERR(entry)) - return PTR_ERR(entry); - err = audit_del_rule(entry); audit_log_rule_change("remove_rule", &entry->rule, !err); - audit_free_rule(entry); break; default: err = -EINVAL; WARN_ON(1); } + if (err || type == AUDIT_DEL_RULE) + audit_free_rule(entry); + return err; } |