]> git.ipfire.org Git - thirdparty/linux.git/commit
bpf: Replace bpf memory allocator with kmalloc_nolock() in local storage
authorAmery Hung <ameryhung@gmail.com>
Fri, 14 Nov 2025 20:13:26 +0000 (12:13 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Wed, 19 Nov 2025 00:20:25 +0000 (16:20 -0800)
commitf484f4a3e058b5641670ebaeb301c06589848521
treee3a4eb3a0c5c71e81212cc594123a673471c6da0
parent39a460c4253e4a437b6b372f462c0c043026784d
bpf: Replace bpf memory allocator with kmalloc_nolock() in local storage

Replace bpf memory allocator with kmalloc_nolock() to reduce memory
wastage due to preallocation.

In bpf_selem_free(), an selem now needs to wait for a RCU grace period
before being freed when reuse_now == true. Therefore, rcu_barrier()
should be always be called in bpf_local_storage_map_free().

In bpf_local_storage_free(), since smap->storage_ma is no longer needed
to return the memory, the function is now independent from smap.

Remove the outdated comment in bpf_local_storage_alloc(). We already
free selem after an RCU grace period in bpf_local_storage_update() when
bpf_local_storage_alloc() failed the cmpxchg since commit c0d63f309186
("bpf: Add bpf_selem_free()").

Signed-off-by: Amery Hung <ameryhung@gmail.com>
Reviewed-by: Martin KaFai Lau <martin.lau@kernel.org>
Link: https://lore.kernel.org/r/20251114201329.3275875-5-ameryhung@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
include/linux/bpf_local_storage.h
kernel/bpf/bpf_local_storage.c