/* ... and that one is done if evict_chunk() decides to delay until the end of syscall. Runs synchronously.  */
void audit_kill_trees(struct list_head *list)
/* ... and that one is done if evict_chunk() decides to delay until the end of syscall. Runs synchronously.  */
void audit_kill_trees(struct list_head *list)
{
	mutex_lock(&audit_cmd_mutex);
	mutex_lock(&audit_filter_mutex);
	while (!list_empty(list)) {
		struct audit_tree *victim;
		victim = list_entry(list->next, struct audit_tree, list);
		kill_rules(victim);
		list_del_init(&victim->list);
		mutex_unlock(&audit_filter_mutex);
		prune_one(victim);
		mutex_lock(&audit_filter_mutex);
	}
	mutex_unlock(&audit_filter_mutex);
	mutex_unlock(&audit_cmd_mutex);
}