selftests/livepatch: Check if CONFIG_LIVEPATCH is enabled
Subsystems (2)
PATCH 1/1 selftests/livepatch: Check if CONFIG_LIVEPATCH is enabled
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.
--- tools/testing/selftests/livepatch/test_modules/Makefile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
tools/testing/selftests/livepatch/test_modules/Makefile +7 -1
@@ -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 # Ensure that KDIR exists, otherwise skip the clean target
Signature · 1 line
2.39.5
Miroslav Benes
maintainerHi,
Quoted 10 lines · Siddharth Menon
When
CONFIG_LIVEPATCHis disabled, compilation fails due to the required structs from the livepatch header file being undefined. This checks forCONFIG_LIVEPATCHin order to verify that it is enabled before compiling livepatch self-tests.Reviewed-by Shuah Khan <[email protected]>Signed-off-by Siddharth Menon <[email protected]>--- tools/testing/selftests/livepatch/test_modules/Makefile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
thank you for the patch.
tools/testing/selftests/livepatch/config contains
CONFIG_LIVEPATCH=yCONFIG_DYNAMIC_DEBUG=y
I assumed that these prerequisites are respected but apparently not for building the test modules if I understand it correctly.
Is it possible to fix it in the way that the config file is respected? Or how do kselftests work with that?
Regards,
Miroslav
Petr Mladek
maintainerQuoted 27 lines · Siddharth Menon
When
CONFIG_LIVEPATCHis disabled, compilation fails due to the required structs from the livepatch header file being undefined. This checks forCONFIG_LIVEPATCHin order to verify that it is enabled before compiling livepatch self-tests.Reviewed-by Shuah Khan <[email protected]>Signed-off-by Siddharth Menon <[email protected]>--- tools/testing/selftests/livepatch/test_modules/Makefile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)tools/testing/selftests/livepatch/test_modules/Makefile +1
-1@@ -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
tools/testing/selftests/livepatch/test_modules/Makefile obj-m += test_klp_atomic_replace.o \ · line 26
Quoted 10 lines
tools/testing/selftests/livepatch/test_modules/Makefile +6
-0+ +# 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
Quoted 4 lines · Petr Mladek
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.
Thanks for the feedback, I will create a new patch as suggested by Miroslav
Quoted 4 lines
And if it could be generic so that it works for all tools/testing/selftests/<project> directories.
And for both build and
run_tests.
I will look into it
Sincerely,
Siddharth Menon