• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/kernel/

Lines Matching refs:tree

46  * the same tree.
53 * tree.chunks anchors chunk.owners[].list hash_lock
54 * tree.rules anchors rule.rlist audit_filter_mutex
55 * chunk.trees anchors tree.same_root hash_lock
59 * tree is refcounted; one reference for "some rules on rules_list refer to
75 struct audit_tree *tree;
77 tree = kmalloc(sizeof(struct audit_tree) + strlen(s) + 1, GFP_KERNEL);
78 if (tree) {
79 atomic_set(&tree->count, 1);
80 tree->goner = 0;
81 INIT_LIST_HEAD(&tree->chunks);
82 INIT_LIST_HEAD(&tree->rules);
83 INIT_LIST_HEAD(&tree->list);
84 INIT_LIST_HEAD(&tree->same_root);
85 tree->root = NULL;
86 strcpy(tree->pathname, s);
88 return tree;
91 static inline void get_tree(struct audit_tree *tree)
93 atomic_inc(&tree->count);
98 struct audit_tree *tree = container_of(rcu, struct audit_tree, head);
99 kfree(tree);
102 static inline void put_tree(struct audit_tree *tree)
104 if (atomic_dec_and_test(&tree->count))
105 call_rcu(&tree->head, __put_tree);
109 const char *audit_tree_path(struct audit_tree *tree)
111 return tree->pathname;
204 int audit_tree_match(struct audit_chunk *chunk, struct audit_tree *tree)
208 if (chunk->owners[n].owner == tree)
317 static int create_chunk(struct inode *inode, struct audit_tree *tree)
332 if (tree->goner) {
341 chunk->owners[0].owner = tree;
342 get_tree(tree);
343 list_add(&chunk->owners[0].list, &tree->chunks);
344 if (!tree->root) {
345 tree->root = chunk;
346 list_add(&tree->same_root, &chunk->trees);
354 /* the first tagged inode becomes root of tree */
355 static int tag_chunk(struct inode *inode, struct audit_tree *tree)
365 return create_chunk(inode, tree);
372 if (old->owners[n].owner == tree) {
410 if (tree->goner) {
433 p->owner = tree;
434 get_tree(tree);
435 list_add(&p->list, &tree->chunks);
440 if (!tree->root) {
441 tree->root = chunk;
442 list_add(&tree->same_root, &chunk->trees);
453 static void kill_rules(struct audit_tree *tree)
459 list_for_each_entry_safe(rule, next, &tree->rules, rlist) {
463 if (rule->tree) {
469 audit_log_untrustedstring(ab, rule->tree->pathname);
473 rule->tree = NULL;
498 /* trim the uncommitted chunks from tree */
500 static void trim_marked(struct audit_tree *tree)
504 if (tree->goner) {
509 for (p = tree->chunks.next; p != &tree->chunks; p = q) {
514 list_add(p, &tree->chunks);
518 while (!list_empty(&tree->chunks)) {
521 node = list_entry(tree->chunks.next, struct node, list);
529 if (!tree->root && !tree->goner) {
530 tree->goner = 1;
533 kill_rules(tree);
534 list_del_init(&tree->list);
536 prune_one(tree);
547 struct audit_tree *tree;
548 tree = rule->tree;
549 if (tree) {
552 if (list_empty(&tree->rules) && !tree->goner) {
553 tree->root = NULL;
554 list_del_init(&tree->same_root);
555 tree->goner = 1;
556 list_move(&tree->list, &prune_list);
557 rule->tree = NULL;
562 rule->tree = NULL;
581 struct audit_tree *tree;
587 tree = container_of(cursor.next, struct audit_tree, list);
588 get_tree(tree);
590 list_add(&cursor, &tree->list);
593 err = kern_path(tree->pathname, 0, &path);
603 list_for_each_entry(node, &tree->chunks, list) {
612 trim_marked(tree);
613 put_tree(tree);
628 rule->inode_f || rule->watch || rule->tree)
630 rule->tree = alloc_tree(pathname);
631 if (!rule->tree)
636 void audit_put_tree(struct audit_tree *tree)
638 put_tree(tree);
649 struct audit_tree *seed = rule->tree, *tree;
654 list_for_each_entry(tree, &tree_list, list) {
655 if (!strcmp(seed->pathname, tree->pathname)) {
657 rule->tree = tree;
658 list_add(&rule->rlist, &tree->rules);
662 tree = seed;
663 list_add(&tree->list, &tree_list);
664 list_add(&rule->rlist, &tree->rules);
665 /* do not set rule->tree yet */
668 err = kern_path(tree->pathname, 0, &path);
678 get_tree(tree);
679 err = iterate_mounts(tag_mount, tree, mnt);
685 list_for_each_entry(node, &tree->chunks, list)
689 trim_marked(tree);
695 put_tree(tree);
698 rule->tree = tree;
699 put_tree(tree);
704 list_del_init(&tree->list);
705 list_del_init(&tree->rules);
706 put_tree(tree);
737 struct audit_tree *tree;
740 tree = container_of(cursor.next, struct audit_tree, list);
741 get_tree(tree);
743 list_add(&cursor, &tree->list);
746 err = kern_path(tree->pathname, 0, &path2);
753 put_tree(tree);
758 failed = iterate_mounts(tag_mount, tree, tagged);
760 put_tree(tree);
767 if (!tree->goner) {
768 list_del(&tree->list);
769 list_add(&tree->list, &tree_list);
772 put_tree(tree);
776 struct audit_tree *tree;
778 tree = container_of(barrier.prev, struct audit_tree, list);
779 get_tree(tree);
780 list_del(&tree->list);
781 list_add(&tree->list, &barrier);
787 list_for_each_entry(node, &tree->chunks, list)
791 trim_marked(tree);
794 put_tree(tree);