Lines Matching refs:avc

99 void selinux_avc_init(struct selinux_avc **avc)  in selinux_avc_init()  argument
110 *avc = &selinux_avc; in selinux_avc_init()
113 unsigned int avc_get_cache_threshold(struct selinux_avc *avc) in avc_get_cache_threshold() argument
115 return avc->avc_cache_threshold; in avc_get_cache_threshold()
118 void avc_set_cache_threshold(struct selinux_avc *avc, in avc_set_cache_threshold() argument
121 avc->avc_cache_threshold = cache_threshold; in avc_set_cache_threshold()
156 int avc_get_hash_stats(struct selinux_avc *avc, char *page) in avc_get_hash_stats() argument
167 head = &avc->avc_cache.slots[i]; in avc_get_hash_stats()
182 atomic_read(&avc->avc_cache.active_nodes), in avc_get_hash_stats()
445 static void avc_node_delete(struct selinux_avc *avc, struct avc_node *node) in avc_node_delete() argument
450 atomic_dec(&avc->avc_cache.active_nodes); in avc_node_delete()
453 static void avc_node_kill(struct selinux_avc *avc, struct avc_node *node) in avc_node_kill() argument
458 atomic_dec(&avc->avc_cache.active_nodes); in avc_node_kill()
461 static void avc_node_replace(struct selinux_avc *avc, in avc_node_replace() argument
467 atomic_dec(&avc->avc_cache.active_nodes); in avc_node_replace()
470 static inline int avc_reclaim_node(struct selinux_avc *avc) in avc_reclaim_node() argument
479 hvalue = atomic_inc_return(&avc->avc_cache.lru_hint) & in avc_reclaim_node()
481 head = &avc->avc_cache.slots[hvalue]; in avc_reclaim_node()
482 lock = &avc->avc_cache.slots_lock[hvalue]; in avc_reclaim_node()
489 avc_node_delete(avc, node); in avc_reclaim_node()
505 static struct avc_node *avc_alloc_node(struct selinux_avc *avc) in avc_alloc_node() argument
516 if (atomic_inc_return(&avc->avc_cache.active_nodes) > in avc_alloc_node()
517 avc->avc_cache_threshold) in avc_alloc_node()
518 avc_reclaim_node(avc); in avc_alloc_node()
532 static inline struct avc_node *avc_search_node(struct selinux_avc *avc, in avc_search_node() argument
540 head = &avc->avc_cache.slots[hvalue]; in avc_search_node()
565 static struct avc_node *avc_lookup(struct selinux_avc *avc, in avc_lookup() argument
571 node = avc_search_node(avc, ssid, tsid, tclass); in avc_lookup()
582 static int avc_latest_notif_update(struct selinux_avc *avc, in avc_latest_notif_update() argument
591 if (seqno < avc->avc_cache.latest_notif) { in avc_latest_notif_update()
593 seqno, avc->avc_cache.latest_notif); in avc_latest_notif_update()
597 if (seqno > avc->avc_cache.latest_notif) in avc_latest_notif_update()
598 avc->avc_cache.latest_notif = seqno; in avc_latest_notif_update()
623 static struct avc_node *avc_insert(struct selinux_avc *avc, in avc_insert() argument
634 if (avc_latest_notif_update(avc, avd->seqno, 1)) in avc_insert()
637 node = avc_alloc_node(avc); in avc_insert()
643 avc_node_kill(avc, node); in avc_insert()
648 head = &avc->avc_cache.slots[hvalue]; in avc_insert()
649 lock = &avc->avc_cache.slots_lock[hvalue]; in avc_insert()
655 avc_node_replace(avc, node, pos); in avc_insert()
844 static int avc_update_node(struct selinux_avc *avc, in avc_update_node() argument
871 node = avc_alloc_node(avc); in avc_update_node()
880 head = &avc->avc_cache.slots[hvalue]; in avc_update_node()
881 lock = &avc->avc_cache.slots_lock[hvalue]; in avc_update_node()
897 avc_node_kill(avc, node); in avc_update_node()
910 avc_node_kill(avc, node); in avc_update_node()
941 avc_node_replace(avc, node, orig); in avc_update_node()
951 static void avc_flush(struct selinux_avc *avc) in avc_flush() argument
960 head = &avc->avc_cache.slots[i]; in avc_flush()
961 lock = &avc->avc_cache.slots_lock[i]; in avc_flush()
970 avc_node_delete(avc, node); in avc_flush()
980 int avc_ss_reset(struct selinux_avc *avc, u32 seqno) in avc_ss_reset() argument
985 avc_flush(avc); in avc_ss_reset()
997 avc_latest_notif_update(avc, seqno, 0); in avc_ss_reset()
1020 return avc_insert(state->avc, ssid, tsid, tclass, avd, xp_node); in avc_compute_av()
1036 avc_update_node(state->avc, AVC_CALLBACK_GRANT, requested, driver, in avc_denied()
1070 node = avc_lookup(state->avc, ssid, tsid, tclass); in avc_has_extended_perms()
1099 avc_update_node(state->avc, AVC_CALLBACK_ADD_XPERMS, requested, in avc_has_extended_perms()
1161 node = avc_lookup(state->avc, ssid, tsid, tclass); in avc_has_perm_noaudit()
1229 return state->avc->avc_cache.latest_notif; in avc_policy_seqno()
1246 avc_flush(selinux_state.avc); in avc_disable()