Lines Matching refs:node

146 	struct avc_node *node;  in avc_get_hash_stats()  local
158 hlist_for_each_entry_rcu(node, head, list) in avc_get_hash_stats()
325 static int avc_add_xperms_decision(struct avc_node *node, in avc_add_xperms_decision() argument
334 list_add(&dest_xpd->xpd_list, &node->ae.xp_node->xpd_head); in avc_add_xperms_decision()
335 node->ae.xp_node->xp.len++; in avc_add_xperms_decision()
350 static int avc_xperms_populate(struct avc_node *node, in avc_xperms_populate() argument
375 node->ae.xp_node = dest; in avc_xperms_populate()
431 struct avc_node *node = container_of(rhead, struct avc_node, rhead); in avc_node_free() local
432 avc_xperms_free(node->ae.xp_node); in avc_node_free()
433 kmem_cache_free(avc_node_cachep, node); in avc_node_free()
437 static void avc_node_delete(struct avc_node *node) in avc_node_delete() argument
439 hlist_del_rcu(&node->list); in avc_node_delete()
440 call_rcu(&node->rhead, avc_node_free); in avc_node_delete()
444 static void avc_node_kill(struct avc_node *node) in avc_node_kill() argument
446 avc_xperms_free(node->ae.xp_node); in avc_node_kill()
447 kmem_cache_free(avc_node_cachep, node); in avc_node_kill()
461 struct avc_node *node; in avc_reclaim_node() local
477 hlist_for_each_entry(node, head, list) { in avc_reclaim_node()
478 avc_node_delete(node); in avc_reclaim_node()
496 struct avc_node *node; in avc_alloc_node() local
498 node = kmem_cache_zalloc(avc_node_cachep, GFP_NOWAIT | __GFP_NOWARN); in avc_alloc_node()
499 if (!node) in avc_alloc_node()
502 INIT_HLIST_NODE(&node->list); in avc_alloc_node()
510 return node; in avc_alloc_node()
513 static void avc_node_populate(struct avc_node *node, u32 ssid, u32 tsid, u16 tclass, struct av_deci… in avc_node_populate() argument
515 node->ae.ssid = ssid; in avc_node_populate()
516 node->ae.tsid = tsid; in avc_node_populate()
517 node->ae.tclass = tclass; in avc_node_populate()
518 memcpy(&node->ae.avd, avd, sizeof(node->ae.avd)); in avc_node_populate()
523 struct avc_node *node, *ret = NULL; in avc_search_node() local
529 hlist_for_each_entry_rcu(node, head, list) { in avc_search_node()
530 if (ssid == node->ae.ssid && in avc_search_node()
531 tclass == node->ae.tclass && in avc_search_node()
532 tsid == node->ae.tsid) { in avc_search_node()
533 ret = node; in avc_search_node()
555 struct avc_node *node; in avc_lookup() local
558 node = avc_search_node(ssid, tsid, tclass); in avc_lookup()
560 if (node) in avc_lookup()
561 return node; in avc_lookup()
609 struct avc_node *pos, *node = NULL; in avc_insert() local
618 node = avc_alloc_node(); in avc_insert()
619 if (!node) in avc_insert()
622 avc_node_populate(node, ssid, tsid, tclass, avd); in avc_insert()
623 if (avc_xperms_populate(node, xp_node)) { in avc_insert()
624 avc_node_kill(node); in avc_insert()
636 avc_node_replace(node, pos); in avc_insert()
640 hlist_add_head_rcu(&node->list, head); in avc_insert()
837 struct avc_node *pos, *node, *orig = NULL; in avc_update_node() local
841 node = avc_alloc_node(); in avc_update_node()
842 if (!node) { in avc_update_node()
867 avc_node_kill(node); in avc_update_node()
875 avc_node_populate(node, ssid, tsid, tclass, &orig->ae.avd); in avc_update_node()
878 rc = avc_xperms_populate(node, orig->ae.xp_node); in avc_update_node()
880 avc_node_kill(node); in avc_update_node()
887 node->ae.avd.allowed |= perms; in avc_update_node()
888 if (node->ae.xp_node && (flags & AVC_EXTENDED_PERMS)) in avc_update_node()
889 avc_xperms_allow_perm(node->ae.xp_node, driver, base_perm, xperm); in avc_update_node()
893 node->ae.avd.allowed &= ~perms; in avc_update_node()
896 node->ae.avd.auditallow |= perms; in avc_update_node()
899 node->ae.avd.auditallow &= ~perms; in avc_update_node()
902 node->ae.avd.auditdeny |= perms; in avc_update_node()
905 node->ae.avd.auditdeny &= ~perms; in avc_update_node()
908 rc = avc_add_xperms_decision(node, xpd); in avc_update_node()
910 avc_node_kill(node); in avc_update_node()
915 avc_node_replace(node, orig); in avc_update_node()
928 struct avc_node *node; in avc_flush() local
943 hlist_for_each_entry(node, head, list) in avc_flush()
944 avc_node_delete(node); in avc_flush()
1023 struct avc_node *node; in avc_has_extended_perms() local
1041 node = avc_lookup(ssid, tsid, tclass); in avc_has_extended_perms()
1042 if (unlikely(!node)) { in avc_has_extended_perms()
1045 memcpy(&avd, &node->ae.avd, sizeof(avd)); in avc_has_extended_perms()
1046 xp_node = node->ae.xp_node; in avc_has_extended_perms()
1151 struct avc_node *node; in avc_has_perm_noaudit() local
1157 node = avc_lookup(ssid, tsid, tclass); in avc_has_perm_noaudit()
1158 if (unlikely(!node)) { in avc_has_perm_noaudit()
1163 denied = requested & ~node->ae.avd.allowed; in avc_has_perm_noaudit()
1164 memcpy(avd, &node->ae.avd, sizeof(*avd)); in avc_has_perm_noaudit()