linux/tools/testing/selftests
Alexander Lobakin 487deb3e33 selftests/bpf: robustify test_xdp_do_redirect with more payload magics
Currently, the test relies on that only dropped ("xmitted") frames will
be recycled and if a frame became an skb, it will be freed later by the
stack and never come back to its page_pool.
So, it easily gets broken by trying to recycle skbs[0]:

  test_xdp_do_redirect:PASS:pkt_count_xdp 0 nsec
  test_xdp_do_redirect:FAIL:pkt_count_zero unexpected pkt_count_zero:
actual 9936 != expected 2
  test_xdp_do_redirect:PASS:pkt_count_tc 0 nsec

That huge mismatch happened because after the TC ingress hook zeroes the
magic, the page gets recycled when skb is freed, not returned to the MM
layer. "Live frames" mode initializes only new pages and keeps the
recycled ones as is by design, so they appear with zeroed magic on the
Rx path again.
Expand the possible magic values from two: 0 (was "xmitted"/dropped or
did hit the TC hook) and 0x42 (hit the input XDP prog) to three: the new
one will mark frames hit the TC hook, so that they will elide both
@pkt_count_zero and @pkt_count_xdp. They can then be recycled to their
page_pool or returned to the page allocator, this won't affect the
counters anyhow. Just make sure to mark them as "input" (0x42) when they
appear on the Rx path again.
Also make an enum from those magics, so that they will be always visible
and can be changed in just one place anytime. This also eases adding any
new marks later on.

Link: https://github.com/kernel-patches/bpf/actions/runs/4386538411/jobs/7681081789
Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Link: https://lore.kernel.org/r/20230313215553.1045175-2-aleksander.lobakin@intel.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2023-03-14 15:20:04 -07:00
..
alsa kselftest/alsa: Run PCM tests for multiple cards in parallel 2023-02-04 09:36:35 +01:00
amd-pstate selftests: amd-pstate: Don't delete source files via Makefile 2023-01-25 10:01:35 -07:00
arm64 linux-kselftest-next-6.3-rc1 2023-02-23 09:37:29 -08:00
bpf selftests/bpf: robustify test_xdp_do_redirect with more payload magics 2023-03-14 15:20:04 -07:00
breakpoints
capabilities
cgroup cgroup/cpuset: Fix wrong check in update_parent_subparts_cpumask() 2023-01-31 12:14:02 -10:00
clone3 selftests: clone3: Fix incorrect kernel headers search path 2023-01-30 15:01:52 -07:00
core selftests: core: Fix incorrect kernel headers search path 2023-01-30 15:04:52 -07:00
cpu-hotplug
cpufreq
damon selftests/damon/debugfs_rm_non_contexts: hide expected write error messages 2023-02-02 22:32:52 -08:00
dma
dmabuf-heaps selftests: dmabuf-heaps: Fix incorrect kernel headers search path 2023-02-13 09:09:44 -07:00
drivers linux-kselftest-next-6.3-rc1 2023-02-23 09:37:29 -08:00
efivarfs
exec
filesystems linux-kselftest-next-6.3-rc1 2023-02-23 09:37:29 -08:00
firmware
fpu
ftrace probes updates for 6.3: 2023-02-23 13:03:08 -08:00
futex selftests: futex: Fix incorrect kernel headers search path 2023-02-13 09:09:44 -07:00
gpio selftests: gpio: Fix incorrect kernel headers search path 2023-02-13 09:09:44 -07:00
hid selftests: hid: enforce new attach API 2023-01-18 22:08:38 +01:00
ia64
intel_pstate
iommu iommufd for 6.3 2023-02-24 14:34:12 -08:00
ipc selftests: ipc: Fix incorrect kernel headers search path 2023-02-13 09:09:44 -07:00
ir
kcmp selftests: kcmp: Fix incorrect kernel headers search path 2023-02-13 09:09:45 -07:00
kexec
kmod
kselftest
kvm ARM: 2023-02-25 11:30:21 -08:00
landlock selftests/landlock: Test ptrace as much as possible with Yama 2023-01-27 18:53:55 +01:00
lib
livepatch
lkdtm
locking
media_tests selftests: media_tests: Fix incorrect kernel headers search path 2023-02-13 09:09:45 -07:00
membarrier linux-kselftest-next-6.3-rc1 2023-02-23 09:37:29 -08:00
memfd - Daniel Verkamp has contributed a memfd series ("mm/memfd: add 2023-02-23 17:09:35 -08:00
memory-hotplug
mincore
mm - Daniel Verkamp has contributed a memfd series ("mm/memfd: add 2023-02-23 17:09:35 -08:00
mount
mount_setattr selftests/mount_setattr: fix to make run_tests failure 2023-02-13 16:37:29 -07:00
move_mount_set_group selftests: move_mount_set_group: Fix incorrect kernel headers search path 2023-02-13 09:09:45 -07:00
mqueue
nci
net selftests: fib_tests: Add test cases for IPv4/IPv6 in route notify 2023-02-23 10:54:13 +01:00
netfilter netfilter: ip6t_rpfilter: Fix regression with VRF interfaces 2023-02-22 00:22:20 +01:00
nolibc selftests/nolibc: Add a "run-user" target to test the program in user land 2023-01-24 15:35:45 -08:00
nsfs
ntb
openat2
perf_events selftests: perf_events: Fix incorrect kernel headers search path 2023-02-13 09:09:45 -07:00
pid_namespace selftests: pid_namespace: Fix incorrect kernel headers search path 2023-02-13 09:09:45 -07:00
pidfd selftests: pidfd: Fix incorrect kernel headers search path 2023-02-13 09:09:45 -07:00
powerpc selftests/powerpc: Fix incorrect kernel headers search path 2023-02-15 22:41:00 +11:00
prctl selftests: Fix spelling mistake "allright" -> "all right" 2023-02-13 09:09:46 -07:00
proc proc: fix PIE proc-empty-vm, proc-pid-vm tests 2023-01-11 16:14:22 -08:00
pstore
ptp selftests/ptp: Remove clean target from Makefile 2023-02-13 10:05:49 -07:00
ptrace selftests: ptrace: Use installed kernel headers search path 2023-02-13 09:09:46 -07:00
rcutorture nolibc updates for v6.3 2023-02-23 09:33:01 -08:00
resctrl
rlimits
rseq linux-kselftest-next-6.3-rc1 2023-02-23 09:37:29 -08:00
rtc
safesetid
sched selftests/sched: fix warn_unused_result build warns 2023-02-13 16:35:54 -07:00
seccomp linux-kselftest-next-6.3-rc1 2023-02-23 09:37:29 -08:00
sgx
sigaltstack
size
sparc64
splice
static_keys
sync selftests: sync: Fix incorrect kernel headers search path 2023-02-13 09:09:45 -07:00
syscall_user_dispatch
sysctl
tc-testing net/sched: Retire rsvp classifier 2023-02-16 09:27:07 +01:00
tdx selftests: tdx: Use installed kernel headers search path 2023-02-13 09:09:46 -07:00
timens
timers
tmpfs
tpm2 selftests: tpm2: remove redundant ord() 2023-02-13 09:09:46 -07:00
uevent
user
user_events selftests/user_events: add a note about user_events.h dependency 2023-02-14 13:18:55 -07:00
vDSO
watchdog
wireguard
x86 linux-kselftest-next-6.3-rc1 2023-02-23 09:37:29 -08:00
zram
.gitignore
gen_kselftest_tar.sh
kselftest_deps.sh selftests/vm: rename selftests/vm to selftests/mm 2023-01-18 17:12:56 -08:00
kselftest_harness.h testing: kselftest_harness: add filtering and enumerating tests 2023-01-26 16:00:41 -07:00
kselftest_install.sh
kselftest_module.h
kselftest.h
lib.mk kselftest: Fix error message for unconfigured LLVM builds 2023-01-12 13:38:04 -07:00
Makefile - Daniel Verkamp has contributed a memfd series ("mm/memfd: add 2023-02-23 17:09:35 -08:00
run_kselftest.sh