mirror_ubuntu-kernels/tools/testing/selftests/bpf/map_tests
Hou Tao 73b97bc78b selftests/bpf: Test concurrent updates on bpf_task_storage_busy
Under full preemptible kernel, task local storage lookup operations on
the same CPU may update per-cpu bpf_task_storage_busy concurrently. If
the update of bpf_task_storage_busy is not preemption safe, the final
value of bpf_task_storage_busy may become not-zero forever and
bpf_task_storage_trylock() will always fail. So add a test case to
ensure the update of bpf_task_storage_busy is preemption safe.

Will skip the test case when CONFIG_PREEMPT is disabled, and it can only
reproduce the problem probabilistically. By increasing
TASK_STORAGE_MAP_NR_LOOP and running it under ARM64 VM with 4-cpus, it
takes about four rounds to reproduce:

> test_maps is modified to only run test_task_storage_map_stress_lookup()
$ export TASK_STORAGE_MAP_NR_THREAD=256
$ export TASK_STORAGE_MAP_NR_LOOP=81920
$ export TASK_STORAGE_MAP_PIN_CPU=1
$ time ./test_maps
test_task_storage_map_stress_lookup(135):FAIL:bad bpf_task_storage_busy got -2

real    0m24.743s
user    0m6.772s
sys     0m17.966s

Signed-off-by: Hou Tao <houtao1@huawei.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/r/20220901061938.3789460-5-houtao@huaweicloud.com
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
2022-09-01 12:16:21 -07:00
..
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
array_map_batch_ops.c selftests/bpf: Migrate selftests to bpf_map_create() 2021-11-25 23:37:38 +01:00
htab_map_batch_ops.c selftests/bpf: Migrate selftests to bpf_map_create() 2021-11-25 23:37:38 +01:00
lpm_trie_map_batch_ops.c selftests/bpf: Migrate selftests to bpf_map_create() 2021-11-25 23:37:38 +01:00
map_in_map_batch_ops.c selftests/bpf: Handle batch operations for map-in-map bpf-maps 2022-05-10 10:34:57 -07:00
sk_storage_map.c selftests/bpf: Replace all uses of bpf_load_btf() with bpf_btf_load() 2021-12-10 15:29:18 -08:00
task_storage_map.c selftests/bpf: Test concurrent updates on bpf_task_storage_busy 2022-09-01 12:16:21 -07:00