On Wed 2024-11-06 23:11:20, Siddharth Menon wrote: > When CONFIG_LIVEPATCH is disabled, compilation fails due to the > required structs from the livepatch header file being undefined. > This checks for CONFIG_LIVEPATCH in order to verify that > it is enabled before compiling livepatch self-tests. > > Reviewed-by: Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx> > Signed-off-by: Siddharth Menon <simeddon@xxxxxxxxx> > --- > tools/testing/selftests/livepatch/test_modules/Makefile | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/tools/testing/selftests/livepatch/test_modules/Makefile b/tools/testing/selftests/livepatch/test_modules/Makefile > index e6e638c4bcba..b34b80544709 100644 > --- a/tools/testing/selftests/livepatch/test_modules/Makefile > +++ b/tools/testing/selftests/livepatch/test_modules/Makefile > @@ -1,5 +1,6 @@ > TESTMODS_DIR := $(realpath $(dir $(abspath $(lastword $(MAKEFILE_LIST))))) > KDIR ?= /lib/modules/$(shell uname -r)/build > +CONFIG_LIVEPATCH := $(shell cd $(KDIR) && scripts/config --state CONFIG_LIVEPATCH) > > obj-m += test_klp_atomic_replace.o \ > test_klp_callbacks_busy.o \ > @@ -13,10 +14,15 @@ obj-m += test_klp_atomic_replace.o \ > test_klp_shadow_vars.o \ > test_klp_syscall.o > > -# Ensure that KDIR exists, otherwise skip the compilation > + > +# Ensure that KDIR exists and CONFIG_LIVEPATCH is enabled, else skip compilation > modules: > ifneq ("$(wildcard $(KDIR))", "") > +ifneq ($(filter y m,$(CONFIG_LIVEPATCH)),) > $(Q)$(MAKE) -C $(KDIR) modules KBUILD_EXTMOD=$(TESTMODS_DIR) > +else > + $(warning CONFIG_LIVEPATCH is not enabled in the kernel config file.) > +endif > endif This handles only the build of the modules. It does not block building the test_klp-call_getpid binary. Also it does not block running the tests, so I get: tools/testing/selftests/livepatch # make run_tests CC test_klp-call_getpid Makefile:24: CONFIG_LIVEPATCH is not enabled in the kernel config file. make[1]: Nothing to be done for 'modules'. TAP version 13 1..7 # timeout set to 0 # selftests: livepatch: test-livepatch.sh # TEST: basic function patching ... ERROR: Can't find "test_modules/test_klp_livepatch.ko", try "make" not ok 1 selftests: livepatch: test-livepatch.sh # exit=1 # timeout set to 0 # selftests: livepatch: test-callbacks.sh # TEST: target module before livepatch ... ERROR: Can't find "test_modules/test_klp_callbacks_mod.ko", try "make" not ok 2 selftests: livepatch: test-callbacks.sh # exit=1 ... I like idea mentioned in Miroslav's reply. I wonder if the check could take into account all CONFIG_* variables mentioned in tools/testing/selftests/livepatch/config. And if it could be generic so that it works for all tools/testing/selftests/<project> directories. And for both build and run_tests. Best Regards, Petr