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@linuxfoundation.org Signed-off-by: Siddharth Menon simeddon@gmail.com
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