selftests/bpf: fix bpf_testmod.ko recompilation logic
authorAndrii Nakryiko <andrii@kernel.org>
Fri, 11 Dec 2020 01:59:46 +0000 (17:59 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 11 Dec 2020 05:16:29 +0000 (21:16 -0800)
commita67079b03165a17f9aceab3dd26b1638af68e0fc
tree50eb1603f3a50f0849bff7cec78e12fb9c38f8bb
parent092fde0f863b72b67c4d6dc03844f5658fc00a35
selftests/bpf: fix bpf_testmod.ko recompilation logic

bpf_testmod.ko build rule declared dependency on VMLINUX_BTF, but the variable
itself was initialized after the rule was declared, which often caused
bpf_testmod.ko to not be re-compiled. Fix by moving VMLINUX_BTF determination
sooner.

Also enforce bpf_testmod.ko recompilation when we detect that vmlinux image
changed by removing bpf_testmod/bpf_testmod.ko. This is necessary to generate
correct module's split BTF. Without it, Kbuild's module build logic might
determine that nothing changed on the kernel side and thus bpf_testmod.ko
shouldn't be rebuilt, so won't re-generate module BTF, which often leads to
module's BTF with wrong string offsets against vmlinux BTF. Removing .ko file
forces Kbuild to re-build the module.

Reported-by: Alexei Starovoitov <ast@kernel.org>
Fixes: 9f7fa225894c ("selftests/bpf: Add bpf_testmod kernel module for testing")
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20201211015946.4062098-1-andrii@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/Makefile