]> Git Repo - J-linux.git/commit
bpf: Zero-fill re-used per-cpu map element
authorDavid Verbeiren <[email protected]>
Wed, 4 Nov 2020 11:23:32 +0000 (12:23 +0100)
committerAlexei Starovoitov <[email protected]>
Fri, 6 Nov 2020 03:55:57 +0000 (19:55 -0800)
commitd3bec0138bfbe58606fc1d6f57a4cdc1a20218db
tree76571076544b6d29c768d826d1a1db9744143363
parent7c0afcad7507636529e6a5a2a5eef5482619a449
bpf: Zero-fill re-used per-cpu map element

Zero-fill element values for all other cpus than current, just as
when not using prealloc. This is the only way the bpf program can
ensure known initial values for all cpus ('onallcpus' cannot be
set when coming from the bpf program).

The scenario is: bpf program inserts some elements in a per-cpu
map, then deletes some (or userspace does). When later adding
new elements using bpf_map_update_elem(), the bpf program can
only set the value of the new elements for the current cpu.
When prealloc is enabled, previously deleted elements are re-used.
Without the fix, values for other cpus remain whatever they were
when the re-used entry was previously freed.

A selftest is added to validate correct operation in above
scenario as well as in case of LRU per-cpu map element re-use.

Fixes: 6c9059817432 ("bpf: pre-allocate hash map elements")
Signed-off-by: David Verbeiren <[email protected]>
Signed-off-by: Alexei Starovoitov <[email protected]>
Acked-by: Matthieu Baerts <[email protected]>
Acked-by: Andrii Nakryiko <[email protected]>
Link: https://lore.kernel.org/bpf/[email protected]
kernel/bpf/hashtab.c
tools/testing/selftests/bpf/prog_tests/map_init.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/test_map_init.c [new file with mode: 0644]
This page took 0.051041 seconds and 4 git commands to generate.