Messages in this thread |  | | Date | Thu, 30 Apr 2026 11:09:14 -0300 | | From | Ricardo B. Marlière <> | | Subject | Re: [PATCH bpf-next v10 02/11] selftests/bpf: Fix test_kmods KDIR to honor O= and distro kernels |
| |
On Thu Apr 30, 2026 at 10:30 AM -03, bot+bpf-ci wrote: >> diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile >> index 6094fe99b5f6..cc6ee7a2df93 100644 >> --- a/tools/testing/selftests/bpf/Makefile >> +++ b/tools/testing/selftests/bpf/Makefile > > [ ... ] > >> diff --git a/tools/testing/selftests/bpf/test_kmods/Makefile b/tools/testing/selftests/bpf/test_kmods/Makefile >> index 63c4d3f6a12f..031c7454ce65 100644 >> --- a/tools/testing/selftests/bpf/test_kmods/Makefile >> +++ b/tools/testing/selftests/bpf/test_kmods/Makefile >> @@ -1,5 +1,16 @@ >> TEST_KMOD_DIR := $(realpath $(dir $(abspath $(lastword $(MAKEFILE_LIST))))) >> -KDIR ?= $(abspath $(TEST_KMOD_DIR)/../../../../..) >> +SRCTREE_KDIR := $(abspath $(TEST_KMOD_DIR)/../../../../..) >> +# Honor O=/KBUILD_OUTPUT only if they point at a prepared kernel build >> +# directory (one containing Module.symvers); otherwise treat the value as a >> +# selftests-only output directory and fall back to in-tree or distro headers. >> +# The parent bpf/Makefile resolves O=/KBUILD_OUTPUT to absolute paths before >> +# invoking this sub-make so relative paths still anchor to the user's >> +# invocation directory. >> +KMOD_O := $(or $(O),$(KBUILD_OUTPUT)) >> +KMOD_O_VALID := $(if $(KMOD_O),$(if $(wildcard $(KMOD_O)/Module.symvers),$(KMOD_O))) >> +KDIR ?= $(if $(KMOD_O_VALID),$(SRCTREE_KDIR), \ >> + $(if $(wildcard $(SRCTREE_KDIR)/Module.symvers),$(SRCTREE_KDIR), \ >> + /lib/modules/$(shell uname -r)/build)) > > Will falling back to the host kernel headers cause compilation errors > when building in-tree test modules like bpf_testmod? > > Since bpf_testmod relies heavily on internal BPF structures, > experimental macros, and kfuncs that change frequently between kernel > releases, compiling it against /lib/modules/$(uname -r)/build on a > system where the running kernel does not exactly match the upstream > source tree will likely fail.
This is only the fallback case (inspired by livepatch collection which uses this KDIR as default), the targeted invocation for this series is something like:
make -C /lib/modules/$(uname -r)/source/tools/testing/selftests \ O=/lib/modules/$(uname -r)/build SKIP_TARGETS= TARGETS=bpf \ BPF_STRICT_BUILD=0
The usual in-tree way of building vmlinux and then the selftests strictly would keep the same current behavior.
> > If the host headers are present, the permissive skip check further down > in the file will pass since the directory exists. Because the > compilation failure is not ignored by the parent bpf/Makefile, won't > this abort the entire BPF selftests build with confusing C compilation > errors instead of silently skipping the unconfigured kernel tree? > > Should in-tree test modules avoid falling back to host distro headers to > prevent these version mismatches?
Without the fallback, a user running from a tree matched to their installed kernel but without a prior in-tree build would lose bpf_testmod. Small niche, but the workaround (O=/lib/modules/$(uname -r)/build) might not be obvious. The fallback covers them at zero cost to everyone else, so I think it should stay.
> > This was raised by Sashiko AI reviewer in v9: > > https://lore.kernel.org/bpf/20260429194107.806B7C19425@smtp.kernel.org/ > > The issue was acknowledged in v9 but has not been addressed in v10. > > [ ... ] > > > --- > AI reviewed your patch. Please fix the bug or email reply why it's not a bug. > See: https://github.com/kernel-patches/vmtest/blob/master/ci/claude/README.md > > CI run summary: https://github.com/kernel-patches/bpf/actions/runs/25167006036
|  |