diff options
author | Richard Guy Briggs <rgb@redhat.com> | 2014-10-02 22:05:19 -0400 |
---|---|---|
committer | Eric Paris <eparis@redhat.com> | 2014-10-10 15:07:58 -0400 |
commit | e85322d21cfebeac64f58a204e9adc0bc5c1e46f (patch) | |
tree | 9f7b9e1e1050697c0b474a8dfd969ed5fb69d29e | |
parent | 739c95038e68d364b01c0fc6f8fb8e47b1c1e979 (diff) |
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, | |||
1064 | int err = 0; | 1064 | int err = 0; |
1065 | struct audit_entry *entry; | 1065 | struct audit_entry *entry; |
1066 | 1066 | ||
1067 | entry = audit_data_to_entry(data, datasz); | ||
1068 | if (IS_ERR(entry)) | ||
1069 | return PTR_ERR(entry); | ||
1070 | |||
1067 | switch (type) { | 1071 | switch (type) { |
1068 | case AUDIT_ADD_RULE: | 1072 | case AUDIT_ADD_RULE: |
1069 | entry = audit_data_to_entry(data, datasz); | ||
1070 | if (IS_ERR(entry)) | ||
1071 | return PTR_ERR(entry); | ||
1072 | |||
1073 | err = audit_add_rule(entry); | 1073 | err = audit_add_rule(entry); |
1074 | audit_log_rule_change("add_rule", &entry->rule, !err); | 1074 | audit_log_rule_change("add_rule", &entry->rule, !err); |
1075 | if (err) | ||
1076 | audit_free_rule(entry); | ||
1077 | break; | 1075 | break; |
1078 | case AUDIT_DEL_RULE: | 1076 | case AUDIT_DEL_RULE: |
1079 | entry = audit_data_to_entry(data, datasz); | ||
1080 | if (IS_ERR(entry)) | ||
1081 | return PTR_ERR(entry); | ||
1082 | |||
1083 | err = audit_del_rule(entry); | 1077 | err = audit_del_rule(entry); |
1084 | audit_log_rule_change("remove_rule", &entry->rule, !err); | 1078 | audit_log_rule_change("remove_rule", &entry->rule, !err); |
1085 | audit_free_rule(entry); | ||
1086 | break; | 1079 | break; |
1087 | default: | 1080 | default: |
1088 | err = -EINVAL; | 1081 | err = -EINVAL; |
1089 | WARN_ON(1); | 1082 | WARN_ON(1); |
1090 | } | 1083 | } |
1091 | 1084 | ||
1085 | if (err || type == AUDIT_DEL_RULE) | ||
1086 | audit_free_rule(entry); | ||
1087 | |||
1092 | return err; | 1088 | return err; |
1093 | } | 1089 | } |
1094 | 1090 | ||