Lines Matching refs:node
207 struct avc_node *node; in avc_get_hash_stats() local
219 hlist_for_each_entry_rcu(node, head, list) in avc_get_hash_stats()
381 static int avc_add_xperms_decision(struct avc_node *node, in avc_add_xperms_decision() argument
386 node->ae.xp_node->xp.len++; in avc_add_xperms_decision()
391 list_add(&dest_xpd->xpd_list, &node->ae.xp_node->xpd_head); in avc_add_xperms_decision()
407 static int avc_xperms_populate(struct avc_node *node, in avc_xperms_populate() argument
431 node->ae.xp_node = dest; in avc_xperms_populate()
487 struct avc_node *node = container_of(rhead, struct avc_node, rhead); in avc_node_free() local
488 avc_xperms_free(node->ae.xp_node); in avc_node_free()
489 kmem_cache_free(avc_node_cachep, node); in avc_node_free()
493 static void avc_node_delete(struct avc_node *node) in avc_node_delete() argument
495 hlist_del_rcu(&node->list); in avc_node_delete()
496 call_rcu(&node->rhead, avc_node_free); in avc_node_delete()
500 static void avc_node_kill(struct avc_node *node) in avc_node_kill() argument
502 avc_xperms_free(node->ae.xp_node); in avc_node_kill()
503 kmem_cache_free(avc_node_cachep, node); in avc_node_kill()
517 struct avc_node *node; in avc_reclaim_node() local
532 hlist_for_each_entry(node, head, list) { in avc_reclaim_node()
533 avc_node_delete(node); in avc_reclaim_node()
551 struct avc_node *node; in avc_alloc_node() local
553 node = kmem_cache_zalloc(avc_node_cachep, GFP_ATOMIC|__GFP_NOMEMALLOC); in avc_alloc_node()
554 if (!node) in avc_alloc_node()
557 INIT_HLIST_NODE(&node->list); in avc_alloc_node()
564 return node; in avc_alloc_node()
567 static void avc_node_populate(struct avc_node *node, u32 ssid, u32 tsid, u16 tclass, struct av_deci… in avc_node_populate() argument
569 node->ae.ssid = ssid; in avc_node_populate()
570 node->ae.tsid = tsid; in avc_node_populate()
571 node->ae.tclass = tclass; in avc_node_populate()
572 memcpy(&node->ae.avd, avd, sizeof(node->ae.avd)); in avc_node_populate()
577 struct avc_node *node, *ret = NULL; in avc_search_node() local
583 hlist_for_each_entry_rcu(node, head, list) { in avc_search_node()
584 if (ssid == node->ae.ssid && in avc_search_node()
585 tclass == node->ae.tclass && in avc_search_node()
586 tsid == node->ae.tsid) { in avc_search_node()
587 ret = node; in avc_search_node()
609 struct avc_node *node; in avc_lookup() local
612 node = avc_search_node(ssid, tsid, tclass); in avc_lookup()
614 if (node) in avc_lookup()
615 return node; in avc_lookup()
665 struct avc_node *pos, *node = NULL; in avc_insert() local
672 node = avc_alloc_node(); in avc_insert()
673 if (node) { in avc_insert()
679 avc_node_populate(node, ssid, tsid, tclass, avd); in avc_insert()
680 rc = avc_xperms_populate(node, xp_node); in avc_insert()
682 kmem_cache_free(avc_node_cachep, node); in avc_insert()
693 avc_node_replace(node, pos); in avc_insert()
697 hlist_add_head_rcu(&node->list, head); in avc_insert()
702 return node; in avc_insert()
827 struct avc_node *pos, *node, *orig = NULL; in avc_update_node() local
831 node = avc_alloc_node(); in avc_update_node()
832 if (!node) { in avc_update_node()
857 avc_node_kill(node); in avc_update_node()
865 avc_node_populate(node, ssid, tsid, tclass, &orig->ae.avd); in avc_update_node()
868 rc = avc_xperms_populate(node, orig->ae.xp_node); in avc_update_node()
870 kmem_cache_free(avc_node_cachep, node); in avc_update_node()
877 node->ae.avd.allowed |= perms; in avc_update_node()
878 if (node->ae.xp_node && (flags & AVC_EXTENDED_PERMS)) in avc_update_node()
879 avc_xperms_allow_perm(node->ae.xp_node, driver, xperm); in avc_update_node()
883 node->ae.avd.allowed &= ~perms; in avc_update_node()
886 node->ae.avd.auditallow |= perms; in avc_update_node()
889 node->ae.avd.auditallow &= ~perms; in avc_update_node()
892 node->ae.avd.auditdeny |= perms; in avc_update_node()
895 node->ae.avd.auditdeny &= ~perms; in avc_update_node()
898 avc_add_xperms_decision(node, xpd); in avc_update_node()
901 avc_node_replace(node, orig); in avc_update_node()
914 struct avc_node *node; in avc_flush() local
929 hlist_for_each_entry(node, head, list) in avc_flush()
930 avc_node_delete(node); in avc_flush()
1007 struct avc_node *node; in avc_has_extended_perms() local
1024 node = avc_lookup(ssid, tsid, tclass); in avc_has_extended_perms()
1025 if (unlikely(!node)) { in avc_has_extended_perms()
1026 node = avc_compute_av(ssid, tsid, tclass, &avd, xp_node); in avc_has_extended_perms()
1028 memcpy(&avd, &node->ae.avd, sizeof(avd)); in avc_has_extended_perms()
1029 xp_node = node->ae.xp_node; in avc_has_extended_perms()
1103 struct avc_node *node; in avc_has_perm_noaudit() local
1112 node = avc_lookup(ssid, tsid, tclass); in avc_has_perm_noaudit()
1113 if (unlikely(!node)) in avc_has_perm_noaudit()
1114 node = avc_compute_av(ssid, tsid, tclass, avd, &xp_node); in avc_has_perm_noaudit()
1116 memcpy(avd, &node->ae.avd, sizeof(*avd)); in avc_has_perm_noaudit()