Lines Matching refs:rule

97 	struct audit_krule *erule = &e->rule;  in audit_free_rule()
131 entry->rule.fields = fields; in audit_init_entry()
223 struct audit_field *arch = entry->rule.arch_f; in audit_match_signal()
229 entry->rule.mask) && in audit_match_signal()
231 entry->rule.mask)); in audit_match_signal()
237 entry->rule.mask)); in audit_match_signal()
240 entry->rule.mask)); in audit_match_signal()
248 static inline struct audit_entry *audit_to_entry_common(struct audit_rule_data *rule) in audit_to_entry_common() argument
255 listnr = rule->flags & ~AUDIT_FILTER_PREPEND; in audit_to_entry_common()
271 if (unlikely(rule->action == AUDIT_POSSIBLE)) { in audit_to_entry_common()
275 if (rule->action != AUDIT_NEVER && rule->action != AUDIT_ALWAYS) in audit_to_entry_common()
277 if (rule->field_count > AUDIT_MAX_FIELDS) in audit_to_entry_common()
281 entry = audit_init_entry(rule->field_count); in audit_to_entry_common()
285 entry->rule.flags = rule->flags & AUDIT_FILTER_PREPEND; in audit_to_entry_common()
286 entry->rule.listnr = listnr; in audit_to_entry_common()
287 entry->rule.action = rule->action; in audit_to_entry_common()
288 entry->rule.field_count = rule->field_count; in audit_to_entry_common()
291 entry->rule.mask[i] = rule->mask[i]; in audit_to_entry_common()
295 __u32 *p = &entry->rule.mask[AUDIT_WORD(bit)]; in audit_to_entry_common()
305 entry->rule.mask[j] |= class[j]; in audit_to_entry_common()
340 if (entry->rule.listnr != AUDIT_FILTER_EXCLUDE && in audit_field_valid()
341 entry->rule.listnr != AUDIT_FILTER_USER) in audit_field_valid()
345 if (entry->rule.listnr != AUDIT_FILTER_FS) in audit_field_valid()
350 switch(entry->rule.listnr) { in audit_field_valid()
454 struct audit_field *f = &entry->rule.fields[i]; in audit_data_to_entry()
469 entry->rule.pflags |= AUDIT_LOGINUID_LEGACY; in audit_data_to_entry()
498 entry->rule.arch_f = f; in audit_data_to_entry()
513 entry->rule.buflen += f->val; in audit_data_to_entry()
534 entry->rule.buflen += f->val; in audit_data_to_entry()
536 err = audit_to_watch(&entry->rule, str, f->val, f->op); in audit_data_to_entry()
546 entry->rule.buflen += f->val; in audit_data_to_entry()
548 err = audit_make_tree(&entry->rule, str, f->op); in audit_data_to_entry()
554 err = audit_to_inode(&entry->rule, f); in audit_data_to_entry()
559 if (entry->rule.filterkey || f->val > AUDIT_MAX_KEY_LEN) in audit_data_to_entry()
564 entry->rule.buflen += f->val; in audit_data_to_entry()
565 entry->rule.filterkey = str; in audit_data_to_entry()
568 if (entry->rule.exe || f->val > PATH_MAX) in audit_data_to_entry()
575 entry->rule.buflen += f->val; in audit_data_to_entry()
577 audit_mark = audit_alloc_mark(&entry->rule, str, f->val); in audit_data_to_entry()
583 entry->rule.exe = audit_mark; in audit_data_to_entry()
588 if (entry->rule.inode_f && entry->rule.inode_f->op == Audit_not_equal) in audit_data_to_entry()
589 entry->rule.inode_f = NULL; in audit_data_to_entry()
595 if (entry->rule.tree) in audit_data_to_entry()
596 audit_put_tree(entry->rule.tree); /* that's the temporary one */ in audit_data_to_entry()
597 if (entry->rule.exe) in audit_data_to_entry()
598 audit_remove_mark(entry->rule.exe); /* that's the template one */ in audit_data_to_entry()
812 new = &entry->rule; in audit_dupe_rule()
887 if (entry->rule.inode_f) { in audit_find_rule()
888 h = audit_hash_ino(entry->rule.inode_f->val); in audit_find_rule()
890 } else if (entry->rule.watch) { in audit_find_rule()
895 if (!audit_compare_rule(&entry->rule, &e->rule)) { in audit_find_rule()
902 *p = list = &audit_filter_list[entry->rule.listnr]; in audit_find_rule()
906 if (!audit_compare_rule(&entry->rule, &e->rule)) { in audit_find_rule()
922 struct audit_watch *watch = entry->rule.watch; in audit_add_rule()
923 struct audit_tree *tree = entry->rule.tree; in audit_add_rule()
930 switch(entry->rule.listnr) { in audit_add_rule()
951 err = audit_add_watch(&entry->rule, &list); in audit_add_rule()
964 err = audit_add_tree_rule(&entry->rule); in audit_add_rule()
971 entry->rule.prio = ~0ULL; in audit_add_rule()
972 if (entry->rule.listnr == AUDIT_FILTER_EXIT) { in audit_add_rule()
973 if (entry->rule.flags & AUDIT_FILTER_PREPEND) in audit_add_rule()
974 entry->rule.prio = ++prio_high; in audit_add_rule()
976 entry->rule.prio = --prio_low; in audit_add_rule()
979 if (entry->rule.flags & AUDIT_FILTER_PREPEND) { in audit_add_rule()
980 list_add(&entry->rule.list, in audit_add_rule()
981 &audit_rules_list[entry->rule.listnr]); in audit_add_rule()
983 entry->rule.flags &= ~AUDIT_FILTER_PREPEND; in audit_add_rule()
985 list_add_tail(&entry->rule.list, in audit_add_rule()
986 &audit_rules_list[entry->rule.listnr]); in audit_add_rule()
1005 struct audit_tree *tree = entry->rule.tree; in audit_del_rule()
1012 switch(entry->rule.listnr) { in audit_del_rule()
1027 if (e->rule.watch) in audit_del_rule()
1028 audit_remove_watch_rule(&e->rule); in audit_del_rule()
1030 if (e->rule.tree) in audit_del_rule()
1031 audit_remove_tree_rule(&e->rule); in audit_del_rule()
1033 if (e->rule.exe) in audit_del_rule()
1034 audit_remove_mark_rule(&e->rule); in audit_del_rule()
1045 list_del(&e->rule.list); in audit_del_rule()
1087 static void audit_log_rule_change(char *action, struct audit_krule *rule, int res) in audit_log_rule_change() argument
1100 audit_log_key(ab, rule->filterkey); in audit_log_rule_change()
1101 audit_log_format(ab, " list=%d res=%d", rule->listnr, res); in audit_log_rule_change()
1124 audit_log_rule_change("add_rule", &entry->rule, !err); in audit_rule_change()
1128 audit_log_rule_change("remove_rule", &entry->rule, !err); in audit_rule_change()
1136 if (entry->rule.exe) in audit_rule_change()
1137 audit_remove_mark(entry->rule.exe); in audit_rule_change()
1323 for (i = 0; i < e->rule.field_count; i++) { in audit_filter()
1324 struct audit_field *f = &e->rule.fields[i]; in audit_filter()
1362 result = audit_exe_compare(current, e->rule.exe); in audit_filter()
1375 if (e->rule.action == AUDIT_NEVER || listtype == AUDIT_FILTER_EXCLUDE) in audit_filter()
1387 struct audit_entry *entry = container_of(r, struct audit_entry, rule); in update_lsm_rule()
1395 if (entry->rule.exe) in update_lsm_rule()
1396 audit_remove_mark(entry->rule.exe); in update_lsm_rule()
1408 list_replace_init(&r->rlist, &nentry->rule.rlist); in update_lsm_rule()
1410 list_replace(&r->list, &nentry->rule.list); in update_lsm_rule()