linux-stable/kernel/bpf
Martin KaFai Lau fc6652aab6 bpf: Remember smap in bpf_local_storage
This patch remembers which smap triggers the allocation
of a 'struct bpf_local_storage' object. The local_storage is
allocated during the very first selem added to the owner.
The smap pointer is needed when using the bpf_mem_cache_free
in a later patch because it needs to free to the correct
smap's bpf_mem_alloc object.

When a selem is being removed, it needs to check if it is
the selem that triggers the creation of the local_storage.
If it is, the local_storage->smap pointer will be reset to NULL.
This NULL reset is done under the local_storage->lock in
bpf_selem_unlink_storage_nolock() when a selem is being removed.
Also note that the local_storage may not go away even
local_storage->smap is NULL because there may be other
selem still stored in the local_storage.

Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Link: https://lore.kernel.org/r/20230308065936.1550103-6-martin.lau@linux.dev
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2023-03-10 11:05:28 -08:00
..
preload bpf: iterators: Split iterators.lskel.h into little- and big- endian versions 2023-01-28 12:45:15 -08:00
Kconfig rcu: Make the TASKS_RCU Kconfig option be selected 2022-04-20 16:52:58 -07:00
Makefile bpf: Enable cpumasks to be queried and used as kptrs 2023-01-25 07:57:49 -08:00
arraymap.c bpf: arraymap memory usage 2023-03-07 09:33:42 -08:00
bloom_filter.c bpf: bloom_filter memory usage 2023-03-07 09:33:42 -08:00
bpf_cgrp_storage.c bpf: Refactor codes into bpf_local_storage_destroy 2023-03-10 11:05:28 -08:00
bpf_inode_storage.c bpf: Refactor codes into bpf_local_storage_destroy 2023-03-10 11:05:28 -08:00
bpf_iter.c bpf: implement numbers iterator 2023-03-08 16:19:51 -08:00
bpf_local_storage.c bpf: Remember smap in bpf_local_storage 2023-03-10 11:05:28 -08:00
bpf_lru_list.c
bpf_lru_list.h printk: stop including cache.h from printk.h 2022-05-13 07:20:07 -07:00
bpf_lsm.c bpf: Fix the kernel crash caused by bpf_setsockopt(). 2023-01-26 23:26:40 -08:00
bpf_struct_ops.c bpf: bpf_struct_ops memory usage 2023-03-07 09:33:43 -08:00
bpf_struct_ops_types.h bpf: Add dummy BPF STRUCT_OPS for test purpose 2021-11-01 14:10:00 -07:00
bpf_task_storage.c bpf: Refactor codes into bpf_local_storage_destroy 2023-03-10 11:05:28 -08:00
btf.c bpf: add iterator kfuncs registration and validation logic 2023-03-08 16:19:50 -08:00
cgroup.c bpf: allow ctx writes using BPF_ST_MEM instruction 2023-03-03 21:41:46 -08:00
cgroup_iter.c bpf: Pin the start cgroup in cgroup_iter_seq_init() 2022-11-21 17:40:42 +01:00
core.c bpf: add missing header file include 2023-02-22 09:52:32 -08:00
cpumap.c bpf: cpumap memory usage 2023-03-07 09:33:42 -08:00
cpumask.c bpf: Refactor RCU enforcement in the verifier. 2023-03-03 17:42:20 +01:00
devmap.c bpf: devmap memory usage 2023-03-07 09:33:42 -08:00
disasm.c bpf: Relicense disassembler as GPL-2.0-only OR BSD-2-Clause 2021-09-02 14:49:23 +02:00
disasm.h bpf: Relicense disassembler as GPL-2.0-only OR BSD-2-Clause 2021-09-02 14:49:23 +02:00
dispatcher.c bpf: Synchronize dispatcher update with bpf_dispatcher_xdp_func 2022-12-14 12:02:14 -08:00
hashtab.c bpf: hashtab memory usage 2023-03-07 09:33:42 -08:00
helpers.c bpf: implement numbers iterator 2023-03-08 16:19:51 -08:00
inode.c fs: port inode_init_owner() to mnt_idmap 2023-01-19 09:24:28 +01:00
link_iter.c bpf: Add bpf_link iterator 2022-05-10 11:20:45 -07:00
local_storage.c bpf: local_storage memory usage 2023-03-07 09:33:43 -08:00
lpm_trie.c bpf: lpm_trie memory usage 2023-03-07 09:33:42 -08:00
map_in_map.c bpf: Add comments for map BTF matching requirement for bpf_list_head 2022-11-17 19:22:14 -08:00
map_in_map.h
map_iter.c bpf: Introduce MEM_RDONLY flag 2021-12-18 13:27:41 -08:00
memalloc.c bpf: Zeroing allocated object from slab in bpf memory allocator 2023-02-15 15:40:06 -08:00
mmap_unlock_work.h bpf: Introduce helper bpf_find_vma 2021-11-07 11:54:51 -08:00
net_namespace.c net: Add includes masked by netdevice.h including uapi/bpf.h 2021-12-29 20:03:05 -08:00
offload.c bpf: offload map memory usage 2023-03-07 09:33:43 -08:00
percpu_freelist.c bpf: Initialize same number of free nodes for each pcpu_freelist 2022-11-11 12:05:14 -08:00
percpu_freelist.h
prog_iter.c
queue_stack_maps.c bpf: queue_stack_maps memory usage 2023-03-07 09:33:42 -08:00
reuseport_array.c bpf: reuseport_array memory usage 2023-03-07 09:33:42 -08:00
ringbuf.c bpf: ringbuf memory usage 2023-03-07 09:33:42 -08:00
stackmap.c bpf: stackmap memory usage 2023-03-07 09:33:42 -08:00
syscall.c bpf: enforce all maps having memory usage callback 2023-03-07 09:33:43 -08:00
sysfs_btf.c
task_iter.c bpf: keep a reference to the mm, in case the task is dead. 2022-12-28 14:11:48 -08:00
tnum.c bpf, tnums: Provably sound, faster, and more precise algorithm for tnum_mul 2021-06-01 13:34:15 +02:00
trampoline.c bpf: Fix panic due to wrong pageattr of im->image 2022-12-28 13:46:28 -08:00
verifier.c bpf: take into account liveness when propagating precision 2023-03-10 10:11:42 -08:00