> 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.
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?
This was raised by Sashiko AI reviewer in v9:
https://lore.kernel.org/bpf/[email protected]/
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