diff options
| author | Dave Jones <davej@redhat.com> | 2006-09-05 17:20:21 -0400 |
|---|---|---|
| committer | Dave Jones <davej@redhat.com> | 2006-09-05 17:20:21 -0400 |
| commit | 115b384cf87249d76adb0b21aca11ee22128927d (patch) | |
| tree | f39a2a54863e9d82d1196906f92c82ab5991c6af /kernel/auditfilter.c | |
| parent | 8eb7925f93af75e66a240d148efdec212f95bcb7 (diff) | |
| parent | c336923b668fdcf0312efbec3b44895d713f4d81 (diff) | |
Merge ../linus
Diffstat (limited to 'kernel/auditfilter.c')
| -rw-r--r-- | kernel/auditfilter.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c index 5b4e16276ca0..6a9a5c5a4e7d 100644 --- a/kernel/auditfilter.c +++ b/kernel/auditfilter.c | |||
| @@ -442,6 +442,7 @@ static struct audit_entry *audit_rule_to_entry(struct audit_rule *rule) | |||
| 442 | case AUDIT_EQUAL: | 442 | case AUDIT_EQUAL: |
| 443 | break; | 443 | break; |
| 444 | default: | 444 | default: |
| 445 | err = -EINVAL; | ||
| 445 | goto exit_free; | 446 | goto exit_free; |
| 446 | } | 447 | } |
| 447 | } | 448 | } |
| @@ -579,6 +580,7 @@ static struct audit_entry *audit_data_to_entry(struct audit_rule_data *data, | |||
| 579 | case AUDIT_EQUAL: | 580 | case AUDIT_EQUAL: |
| 580 | break; | 581 | break; |
| 581 | default: | 582 | default: |
| 583 | err = -EINVAL; | ||
| 582 | goto exit_free; | 584 | goto exit_free; |
| 583 | } | 585 | } |
| 584 | } | 586 | } |
| @@ -1134,6 +1136,14 @@ static inline int audit_add_rule(struct audit_entry *entry, | |||
| 1134 | struct audit_watch *watch = entry->rule.watch; | 1136 | struct audit_watch *watch = entry->rule.watch; |
| 1135 | struct nameidata *ndp, *ndw; | 1137 | struct nameidata *ndp, *ndw; |
| 1136 | int h, err, putnd_needed = 0; | 1138 | int h, err, putnd_needed = 0; |
| 1139 | #ifdef CONFIG_AUDITSYSCALL | ||
| 1140 | int dont_count = 0; | ||
| 1141 | |||
| 1142 | /* If either of these, don't count towards total */ | ||
| 1143 | if (entry->rule.listnr == AUDIT_FILTER_USER || | ||
| 1144 | entry->rule.listnr == AUDIT_FILTER_TYPE) | ||
| 1145 | dont_count = 1; | ||
| 1146 | #endif | ||
| 1137 | 1147 | ||
| 1138 | if (inode_f) { | 1148 | if (inode_f) { |
| 1139 | h = audit_hash_ino(inode_f->val); | 1149 | h = audit_hash_ino(inode_f->val); |
| @@ -1174,6 +1184,10 @@ static inline int audit_add_rule(struct audit_entry *entry, | |||
| 1174 | } else { | 1184 | } else { |
| 1175 | list_add_tail_rcu(&entry->list, list); | 1185 | list_add_tail_rcu(&entry->list, list); |
| 1176 | } | 1186 | } |
| 1187 | #ifdef CONFIG_AUDITSYSCALL | ||
| 1188 | if (!dont_count) | ||
| 1189 | audit_n_rules++; | ||
| 1190 | #endif | ||
| 1177 | mutex_unlock(&audit_filter_mutex); | 1191 | mutex_unlock(&audit_filter_mutex); |
| 1178 | 1192 | ||
| 1179 | if (putnd_needed) | 1193 | if (putnd_needed) |
| @@ -1198,6 +1212,14 @@ static inline int audit_del_rule(struct audit_entry *entry, | |||
| 1198 | struct audit_watch *watch, *tmp_watch = entry->rule.watch; | 1212 | struct audit_watch *watch, *tmp_watch = entry->rule.watch; |
| 1199 | LIST_HEAD(inotify_list); | 1213 | LIST_HEAD(inotify_list); |
| 1200 | int h, ret = 0; | 1214 | int h, ret = 0; |
| 1215 | #ifdef CONFIG_AUDITSYSCALL | ||
| 1216 | int dont_count = 0; | ||
| 1217 | |||
| 1218 | /* If either of these, don't count towards total */ | ||
| 1219 | if (entry->rule.listnr == AUDIT_FILTER_USER || | ||
| 1220 | entry->rule.listnr == AUDIT_FILTER_TYPE) | ||
| 1221 | dont_count = 1; | ||
| 1222 | #endif | ||
| 1201 | 1223 | ||
| 1202 | if (inode_f) { | 1224 | if (inode_f) { |
| 1203 | h = audit_hash_ino(inode_f->val); | 1225 | h = audit_hash_ino(inode_f->val); |
| @@ -1235,6 +1257,10 @@ static inline int audit_del_rule(struct audit_entry *entry, | |||
| 1235 | list_del_rcu(&e->list); | 1257 | list_del_rcu(&e->list); |
| 1236 | call_rcu(&e->rcu, audit_free_rule_rcu); | 1258 | call_rcu(&e->rcu, audit_free_rule_rcu); |
| 1237 | 1259 | ||
| 1260 | #ifdef CONFIG_AUDITSYSCALL | ||
| 1261 | if (!dont_count) | ||
| 1262 | audit_n_rules--; | ||
| 1263 | #endif | ||
| 1238 | mutex_unlock(&audit_filter_mutex); | 1264 | mutex_unlock(&audit_filter_mutex); |
| 1239 | 1265 | ||
| 1240 | if (!list_empty(&inotify_list)) | 1266 | if (!list_empty(&inotify_list)) |
