Lines Matching refs:cands

7702 	} cands[];  member
7745 if (btf_is_module(cc->cands[0].btf)) { in btf_get_ptr_to_btf_id()
7751 kern_type_id = cc->cands[0].id; in btf_get_ptr_to_btf_id()
9149 static void bpf_free_cands(struct bpf_cand_cache *cands) in bpf_free_cands() argument
9151 if (!cands->cnt) in bpf_free_cands()
9154 kfree(cands); in bpf_free_cands()
9157 static void bpf_free_cands_from_cache(struct bpf_cand_cache *cands) in bpf_free_cands_from_cache() argument
9159 kfree(cands->name); in bpf_free_cands_from_cache()
9160 kfree(cands); in bpf_free_cands_from_cache()
9182 bpf_log(log, "%d", cc->cands[j].id); in __print_cand_cache()
9201 static u32 hash_cands(struct bpf_cand_cache *cands) in hash_cands() argument
9203 return jhash(cands->name, cands->name_len, 0); in hash_cands()
9206 static struct bpf_cand_cache *check_cand_cache(struct bpf_cand_cache *cands, in check_cand_cache() argument
9210 struct bpf_cand_cache *cc = cache[hash_cands(cands) % cache_size]; in check_cand_cache()
9212 if (cc && cc->name_len == cands->name_len && in check_cand_cache()
9213 !strncmp(cc->name, cands->name, cands->name_len)) in check_cand_cache()
9220 return offsetof(struct bpf_cand_cache, cands[cnt]); in sizeof_cands()
9223 static struct bpf_cand_cache *populate_cand_cache(struct bpf_cand_cache *cands, in populate_cand_cache() argument
9227 struct bpf_cand_cache **cc = &cache[hash_cands(cands) % cache_size], *new_cands; in populate_cand_cache()
9233 new_cands = kmemdup(cands, sizeof_cands(cands->cnt), GFP_KERNEL_ACCOUNT); in populate_cand_cache()
9235 bpf_free_cands(cands); in populate_cand_cache()
9241 new_cands->name = kmemdup_nul(cands->name, cands->name_len, GFP_KERNEL_ACCOUNT); in populate_cand_cache()
9242 bpf_free_cands(cands); in populate_cand_cache()
9275 if (cc->cands[j].btf == btf) { in __purge_cand_cache()
9293 bpf_core_add_cands(struct bpf_cand_cache *cands, const struct btf *targ_btf, in bpf_core_add_cands() argument
9305 if (btf_kind(t) != cands->kind) in bpf_core_add_cands()
9317 if (strncmp(cands->name, targ_name, cands->name_len) != 0) in bpf_core_add_cands()
9321 if (targ_essent_len != cands->name_len) in bpf_core_add_cands()
9325 new_cands = kmalloc(sizeof_cands(cands->cnt + 1), GFP_KERNEL_ACCOUNT); in bpf_core_add_cands()
9327 bpf_free_cands(cands); in bpf_core_add_cands()
9331 memcpy(new_cands, cands, sizeof_cands(cands->cnt)); in bpf_core_add_cands()
9332 bpf_free_cands(cands); in bpf_core_add_cands()
9333 cands = new_cands; in bpf_core_add_cands()
9334 cands->cands[cands->cnt].btf = targ_btf; in bpf_core_add_cands()
9335 cands->cands[cands->cnt].id = i; in bpf_core_add_cands()
9336 cands->cnt++; in bpf_core_add_cands()
9338 return cands; in bpf_core_add_cands()
9344 struct bpf_cand_cache *cands, *cc, local_cand = {}; in bpf_core_find_cands() local
9368 cands = &local_cand; in bpf_core_find_cands()
9369 cands->name = name; in bpf_core_find_cands()
9370 cands->kind = btf_kind(local_type); in bpf_core_find_cands()
9371 cands->name_len = local_essent_len; in bpf_core_find_cands()
9373 cc = check_cand_cache(cands, vmlinux_cand_cache, VMLINUX_CAND_CACHE_SIZE); in bpf_core_find_cands()
9382 cands = bpf_core_add_cands(cands, main_btf, btf_named_start_id(main_btf, true)); in bpf_core_find_cands()
9383 if (IS_ERR(cands)) in bpf_core_find_cands()
9384 return ERR_CAST(cands); in bpf_core_find_cands()
9389 cc = populate_cand_cache(cands, vmlinux_cand_cache, VMLINUX_CAND_CACHE_SIZE); in bpf_core_find_cands()
9399 cc = check_cand_cache(cands, module_cand_cache, MODULE_CAND_CACHE_SIZE); in bpf_core_find_cands()
9414 cands = bpf_core_add_cands(cands, mod_btf, btf_named_start_id(mod_btf, true)); in bpf_core_find_cands()
9416 if (IS_ERR(cands)) in bpf_core_find_cands()
9417 return ERR_CAST(cands); in bpf_core_find_cands()
9426 return populate_cand_cache(cands, module_cand_cache, MODULE_CAND_CACHE_SIZE); in bpf_core_find_cands()
9433 struct bpf_core_cand_list cands = {}; in bpf_core_apply() local
9467 cands.cands = kzalloc_objs(*cands.cands, cc->cnt, in bpf_core_apply()
9469 if (!cands.cands) { in bpf_core_apply()
9477 btf_kind_str[cc->kind], cc->name, cc->cands[i].id); in bpf_core_apply()
9478 cands.cands[i].btf = cc->cands[i].btf; in bpf_core_apply()
9479 cands.cands[i].id = cc->cands[i].id; in bpf_core_apply()
9481 cands.len = cc->cnt; in bpf_core_apply()
9489 err = bpf_core_calc_relo_insn((void *)ctx->log, relo, relo_idx, ctx->btf, &cands, specs, in bpf_core_apply()
9500 kfree(cands.cands); in bpf_core_apply()