OSDN Git Service

selftests/bpf: Fix the snprintf test
authorFlorent Revest <revest@chromium.org>
Wed, 28 Apr 2021 15:25:01 +0000 (17:25 +0200)
committerAndrii Nakryiko <andrii@kernel.org>
Fri, 30 Apr 2021 17:36:59 +0000 (10:36 -0700)
commitf80f88f0e2f2ef9cd805fad1bbf676b0ecd4b55c
treef29dea6f71982e58365e8f975437eed073925aa2
parentd4eecfb28b963493a8701f271789ff04e92ae205
selftests/bpf: Fix the snprintf test

The BPF program for the snprintf selftest runs on all syscall entries.
On busy multicore systems this can cause concurrency issues.

For example it was observed that sometimes the userspace part of the
test reads "    4 0000" instead of "    4 000" (extra '0' at the end)
which seems to happen just before snprintf on another core sets
end[-1] = '\0'.

This patch adds a pid filter to the test to ensure that no
bpf_snprintf() will write over the test's output buffers while the
userspace reads the values.

Fixes: c2e39c6bdc7e ("selftests/bpf: Add a series of tests for bpf_snprintf")
Reported-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Florent Revest <revest@chromium.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20210428152501.1024509-1-revest@chromium.org
tools/testing/selftests/bpf/prog_tests/snprintf.c
tools/testing/selftests/bpf/progs/test_snprintf.c