Lines Matching refs:stab

26 	struct bpf_stab *stab;  in sock_map_alloc()  local
38 stab = kzalloc(sizeof(*stab), GFP_USER); in sock_map_alloc()
39 if (!stab) in sock_map_alloc()
42 bpf_map_init_from_attr(&stab->map, attr); in sock_map_alloc()
43 raw_spin_lock_init(&stab->lock); in sock_map_alloc()
46 cost = (u64) stab->map.max_entries * sizeof(struct sock *); in sock_map_alloc()
47 err = bpf_map_charge_init(&stab->map.memory, cost); in sock_map_alloc()
51 stab->sks = bpf_map_area_alloc(stab->map.max_entries * in sock_map_alloc()
53 stab->map.numa_node); in sock_map_alloc()
54 if (stab->sks) in sock_map_alloc()
55 return &stab->map; in sock_map_alloc()
57 bpf_map_charge_finish(&stab->map.memory); in sock_map_alloc()
59 kfree(stab); in sock_map_alloc()
116 struct bpf_stab *stab = container_of(map, struct bpf_stab, in sock_map_del_link() local
118 if (psock->parser.enabled && stab->progs.skb_parser) in sock_map_del_link()
233 struct bpf_stab *stab = container_of(map, struct bpf_stab, map); in sock_map_free() local
238 raw_spin_lock_bh(&stab->lock); in sock_map_free()
239 for (i = 0; i < stab->map.max_entries; i++) { in sock_map_free()
240 struct sock **psk = &stab->sks[i]; in sock_map_free()
247 raw_spin_unlock_bh(&stab->lock); in sock_map_free()
252 bpf_map_area_free(stab->sks); in sock_map_free()
253 kfree(stab); in sock_map_free()
263 struct bpf_stab *stab = container_of(map, struct bpf_stab, map); in __sock_map_lookup_elem() local
269 return READ_ONCE(stab->sks[key]); in __sock_map_lookup_elem()
277 static int __sock_map_delete(struct bpf_stab *stab, struct sock *sk_test, in __sock_map_delete() argument
283 raw_spin_lock_bh(&stab->lock); in __sock_map_delete()
293 raw_spin_unlock_bh(&stab->lock); in __sock_map_delete()
300 struct bpf_stab *stab = container_of(map, struct bpf_stab, map); in sock_map_delete_from_link() local
302 __sock_map_delete(stab, sk, link_raw); in sock_map_delete_from_link()
307 struct bpf_stab *stab = container_of(map, struct bpf_stab, map); in sock_map_delete_elem() local
314 psk = &stab->sks[i]; in sock_map_delete_elem()
315 return __sock_map_delete(stab, NULL, psk); in sock_map_delete_elem()
320 struct bpf_stab *stab = container_of(map, struct bpf_stab, map); in sock_map_get_next_key() local
324 if (i == stab->map.max_entries - 1) in sock_map_get_next_key()
326 if (i >= stab->map.max_entries) in sock_map_get_next_key()
336 struct bpf_stab *stab = container_of(map, struct bpf_stab, map); in sock_map_update_common() local
355 ret = sock_map_link(map, &stab->progs, sk); in sock_map_update_common()
362 raw_spin_lock_bh(&stab->lock); in sock_map_update_common()
363 osk = stab->sks[idx]; in sock_map_update_common()
372 sock_map_add_link(psock, link, map, &stab->sks[idx]); in sock_map_update_common()
373 stab->sks[idx] = sk; in sock_map_update_common()
375 sock_map_unref(osk, &stab->sks[idx]); in sock_map_update_common()
376 raw_spin_unlock_bh(&stab->lock); in sock_map_update_common()
379 raw_spin_unlock_bh(&stab->lock); in sock_map_update_common()