Lines Matching defs:pack
865 * BPF program pack allocator.
869 * to instruction TLB. To solve this issue, we introduce a BPF program pack
911 struct bpf_prog_pack *pack;
914 pack = kzalloc(struct_size(pack, bitmap, BITS_TO_LONGS(BPF_PROG_CHUNK_COUNT)),
916 if (!pack)
918 pack->ptr = bpf_jit_alloc_exec(BPF_PROG_PACK_SIZE);
919 if (!pack->ptr)
921 bpf_fill_ill_insns(pack->ptr, BPF_PROG_PACK_SIZE);
922 bitmap_zero(pack->bitmap, BPF_PROG_PACK_SIZE / BPF_PROG_CHUNK_SIZE);
924 set_vm_flush_reset_perms(pack->ptr);
925 err = set_memory_rox((unsigned long)pack->ptr,
929 list_add_tail(&pack->list, &pack_list);
930 return pack;
933 bpf_jit_free_exec(pack->ptr);
934 kfree(pack);
941 struct bpf_prog_pack *pack;
963 list_for_each_entry(pack, &pack_list, list) {
964 pos = bitmap_find_next_zero_area(pack->bitmap, BPF_PROG_CHUNK_COUNT, 0,
970 pack = alloc_new_pack(bpf_fill_ill_insns);
971 if (!pack)
977 bitmap_set(pack->bitmap, pos, nbits);
978 ptr = (void *)(pack->ptr) + (pos << BPF_PROG_CHUNK_SHIFT);
987 struct bpf_prog_pack *pack = NULL, *tmp;
999 pack = tmp;
1004 if (WARN_ONCE(!pack, "bpf_prog_pack bug\n"))
1008 pos = ((unsigned long)ptr - (unsigned long)pack->ptr) >> BPF_PROG_CHUNK_SHIFT;
1013 bitmap_clear(pack->bitmap, pos, nbits);
1014 if (bitmap_find_next_zero_area(pack->bitmap, BPF_PROG_CHUNK_COUNT, 0,
1016 list_del(&pack->list);
1017 bpf_jit_free_exec(pack->ptr);
1018 kfree(pack);