Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

livepatch: Move tests from lib/livepatch to selftests/livepatch

The modules are being moved from lib/livepatch to
tools/testing/selftests/livepatch/test_modules.

This code moving will allow writing more complex tests, like for example an
userspace C code that will call a livepatched kernel function.

The modules are now built as out-of-tree
modules, but being part of the kernel source means they will be maintained.

Another advantage of the code moving is to be able to easily change,
debug and rebuild the tests by running make on the selftests/livepatch
directory, which is not currently possible since the modules on
lib/livepatch are build and installed using the "modules" target.

The current approach also keeps the ability to execute the tests manually
by executing the scripts inside selftests/livepatch directory, as it's
currently supported. If the modules are modified, they needed to be
rebuilt before running the scripts though.

The modules are built before running the selftests when using the
kselftest invocations:

make kselftest TARGETS=livepatch
or
make -C tools/testing/selftests/livepatch run_tests

Having the modules being built as out-of-modules requires changing the
currently used 'modprobe' by 'insmod' and adapt the test scripts that
check for the kernel message buffer.

Now it is possible to only compile the modules by running:

make -C tools/testing/selftests/livepatch/

This way the test modules and other test program can be built in order
to be packaged if so desired.

As there aren't any modules being built on lib/livepatch, remove the
TEST_LIVEPATCH Kconfig and it's references.

Note: "make gen_tar" packages the pre-built binaries into the tarball.
It means that it will store the test modules pre-built for
the kernel running on the build host.

Note that these modules need not binary compatible with
the kernel built from the same sources. But the same
is true for other packaged selftest binaries.

The entire kernel sources are needed for rebuilding
the selftests on another system.

Reviewed-by: Joe Lawrence <joe.lawrence@redhat.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Marcos Paulo de Souza <mpdesouza@suse.com>
Acked-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

authored by

Marcos Paulo de Souza and committed by
Shuah Khan
c4bbe83d 6727980b

+98 -115
-1
MAINTAINERS
··· 12510 12510 F: include/linux/livepatch.h 12511 12511 F: kernel/livepatch/ 12512 12512 F: kernel/module/livepatch.c 12513 - F: lib/livepatch/ 12514 12513 F: samples/livepatch/ 12515 12514 F: tools/testing/selftests/livepatch/ 12516 12515
-1
arch/s390/configs/debug_defconfig
··· 886 886 CONFIG_STRING_SELFTEST=y 887 887 CONFIG_TEST_BITOPS=m 888 888 CONFIG_TEST_BPF=m 889 - CONFIG_TEST_LIVEPATCH=m
-1
arch/s390/configs/defconfig
··· 815 815 CONFIG_PERCPU_TEST=m 816 816 CONFIG_ATOMIC64_SELFTEST=y 817 817 CONFIG_TEST_BPF=m 818 - CONFIG_TEST_LIVEPATCH=m
-22
lib/Kconfig.debug
··· 2857 2857 2858 2858 If unsure, say N. 2859 2859 2860 - config TEST_LIVEPATCH 2861 - tristate "Test livepatching" 2862 - default n 2863 - depends on DYNAMIC_DEBUG 2864 - depends on LIVEPATCH 2865 - depends on m 2866 - help 2867 - Test kernel livepatching features for correctness. The tests will 2868 - load test modules that will be livepatched in various scenarios. 2869 - 2870 - To run all the livepatching tests: 2871 - 2872 - make -C tools/testing/selftests TARGETS=livepatch run_tests 2873 - 2874 - Alternatively, individual tests may be invoked: 2875 - 2876 - tools/testing/selftests/livepatch/test-callbacks.sh 2877 - tools/testing/selftests/livepatch/test-livepatch.sh 2878 - tools/testing/selftests/livepatch/test-shadow-vars.sh 2879 - 2880 - If unsure, say N. 2881 - 2882 2860 config TEST_OBJAGG 2883 2861 tristate "Perform selftest on object aggreration manager" 2884 2862 default n
-2
lib/Makefile
··· 134 134 obj-$(CONFIG_TEST_FPU) += test_fpu.o 135 135 CFLAGS_test_fpu.o += $(FPU_CFLAGS) 136 136 137 - obj-$(CONFIG_TEST_LIVEPATCH) += livepatch/ 138 - 139 137 # Some KUnit files (hooks.o) need to be built-in even when KUnit is a module, 140 138 # so we can't just use obj-$(CONFIG_KUNIT). 141 139 ifdef CONFIG_KUNIT
-14
lib/livepatch/Makefile
··· 1 - # SPDX-License-Identifier: GPL-2.0 2 - # 3 - # Makefile for livepatch test code. 4 - 5 - obj-$(CONFIG_TEST_LIVEPATCH) += test_klp_atomic_replace.o \ 6 - test_klp_callbacks_demo.o \ 7 - test_klp_callbacks_demo2.o \ 8 - test_klp_callbacks_busy.o \ 9 - test_klp_callbacks_mod.o \ 10 - test_klp_livepatch.o \ 11 - test_klp_shadow_vars.o \ 12 - test_klp_state.o \ 13 - test_klp_state2.o \ 14 - test_klp_state3.o
lib/livepatch/test_klp_atomic_replace.c tools/testing/selftests/livepatch/test_modules/test_klp_atomic_replace.c
lib/livepatch/test_klp_callbacks_busy.c tools/testing/selftests/livepatch/test_modules/test_klp_callbacks_busy.c
lib/livepatch/test_klp_callbacks_demo.c tools/testing/selftests/livepatch/test_modules/test_klp_callbacks_demo.c
lib/livepatch/test_klp_callbacks_demo2.c tools/testing/selftests/livepatch/test_modules/test_klp_callbacks_demo2.c
lib/livepatch/test_klp_callbacks_mod.c tools/testing/selftests/livepatch/test_modules/test_klp_callbacks_mod.c
lib/livepatch/test_klp_livepatch.c tools/testing/selftests/livepatch/test_modules/test_klp_livepatch.c
lib/livepatch/test_klp_shadow_vars.c tools/testing/selftests/livepatch/test_modules/test_klp_shadow_vars.c
lib/livepatch/test_klp_state.c tools/testing/selftests/livepatch/test_modules/test_klp_state.c
lib/livepatch/test_klp_state2.c tools/testing/selftests/livepatch/test_modules/test_klp_state2.c
lib/livepatch/test_klp_state3.c tools/testing/selftests/livepatch/test_modules/test_klp_state3.c
+1
tools/testing/selftests/livepatch/Makefile
··· 1 1 # SPDX-License-Identifier: GPL-2.0 2 2 3 + TEST_GEN_MODS_DIR := test_modules 3 4 TEST_PROGS_EXTENDED := functions.sh 4 5 TEST_PROGS := \ 5 6 test-livepatch.sh \
+19 -6
tools/testing/selftests/livepatch/README
··· 13 13 Config 14 14 ------ 15 15 16 - Set these config options and their prerequisites: 16 + Set CONFIG_LIVEPATCH=y option and it's prerequisites. 17 17 18 - CONFIG_LIVEPATCH=y 19 - CONFIG_TEST_LIVEPATCH=m 20 18 19 + Building the tests 20 + ------------------ 21 + 22 + To only build the tests without running them, run: 23 + 24 + % make -C tools/testing/selftests/livepatch 25 + 26 + The command above will compile all test modules and test programs, making them 27 + ready to be packaged if so desired. 21 28 22 29 Running the tests 23 30 ----------------- 24 31 25 - Test kernel modules are built as part of lib/ (make modules) and need to 26 - be installed (make modules_install) as the test scripts will modprobe 27 - them. 32 + Test kernel modules are built before running the livepatch selftests. The 33 + modules are located under test_modules directory, and are built as out-of-tree 34 + modules. This is specially useful since the same sources can be built and 35 + tested on systems with different kABI, ensuring they the tests are backwards 36 + compatible. The modules will be loaded by the test scripts using insmod. 28 37 29 38 To run the livepatch selftests, from the top of the kernel source tree: 30 39 31 40 % make -C tools/testing/selftests TARGETS=livepatch run_tests 41 + 42 + or 43 + 44 + % make kselftest TARGETS=livepatch 32 45 33 46 34 47 Adding tests
-1
tools/testing/selftests/livepatch/config
··· 1 1 CONFIG_LIVEPATCH=y 2 2 CONFIG_DYNAMIC_DEBUG=y 3 - CONFIG_TEST_LIVEPATCH=m
+13 -21
tools/testing/selftests/livepatch/functions.sh
··· 127 127 done 128 128 } 129 129 130 - function assert_mod() { 131 - local mod="$1" 132 - 133 - modprobe --dry-run "$mod" &>/dev/null 134 - } 135 - 136 130 function is_livepatch_mod() { 137 131 local mod="$1" 138 132 139 - if [[ $(modinfo "$mod" | awk '/^livepatch:/{print $NF}') == "Y" ]]; then 133 + if [[ ! -f "test_modules/$mod.ko" ]]; then 134 + die "Can't find \"test_modules/$mod.ko\", try \"make\"" 135 + fi 136 + 137 + if [[ $(modinfo "test_modules/$mod.ko" | awk '/^livepatch:/{print $NF}') == "Y" ]]; then 140 138 return 0 141 139 fi 142 140 ··· 144 146 function __load_mod() { 145 147 local mod="$1"; shift 146 148 147 - local msg="% modprobe $mod $*" 149 + local msg="% insmod test_modules/$mod.ko $*" 148 150 log "${msg%% }" 149 - ret=$(modprobe "$mod" "$@" 2>&1) 151 + ret=$(insmod "test_modules/$mod.ko" "$@" 2>&1) 150 152 if [[ "$ret" != "" ]]; then 151 153 die "$ret" 152 154 fi ··· 159 161 160 162 # load_mod(modname, params) - load a kernel module 161 163 # modname - module name to load 162 - # params - module parameters to pass to modprobe 164 + # params - module parameters to pass to insmod 163 165 function load_mod() { 164 166 local mod="$1"; shift 165 - 166 - assert_mod "$mod" || 167 - skip "unable to load module ${mod}, verify CONFIG_TEST_LIVEPATCH=m and run self-tests as root" 168 167 169 168 is_livepatch_mod "$mod" && 170 169 die "use load_lp() to load the livepatch module $mod" ··· 172 177 # load_lp_nowait(modname, params) - load a kernel module with a livepatch 173 178 # but do not wait on until the transition finishes 174 179 # modname - module name to load 175 - # params - module parameters to pass to modprobe 180 + # params - module parameters to pass to insmod 176 181 function load_lp_nowait() { 177 182 local mod="$1"; shift 178 - 179 - assert_mod "$mod" || 180 - skip "unable to load module ${mod}, verify CONFIG_TEST_LIVEPATCH=m and run self-tests as root" 181 183 182 184 is_livepatch_mod "$mod" || 183 185 die "module $mod is not a livepatch" ··· 188 196 189 197 # load_lp(modname, params) - load a kernel module with a livepatch 190 198 # modname - module name to load 191 - # params - module parameters to pass to modprobe 199 + # params - module parameters to pass to insmod 192 200 function load_lp() { 193 201 local mod="$1"; shift 194 202 ··· 201 209 202 210 # load_failing_mod(modname, params) - load a kernel module, expect to fail 203 211 # modname - module name to load 204 - # params - module parameters to pass to modprobe 212 + # params - module parameters to pass to insmod 205 213 function load_failing_mod() { 206 214 local mod="$1"; shift 207 215 208 - local msg="% modprobe $mod $*" 216 + local msg="% insmod test_modules/$mod.ko $*" 209 217 log "${msg%% }" 210 - ret=$(modprobe "$mod" "$@" 2>&1) 218 + ret=$(insmod "test_modules/$mod.ko" "$@" 2>&1) 211 219 if [[ "$ret" == "" ]]; then 212 220 die "$mod unexpectedly loaded" 213 221 fi
+25 -25
tools/testing/selftests/livepatch/test-callbacks.sh
··· 34 34 unload_lp $MOD_LIVEPATCH 35 35 unload_mod $MOD_TARGET 36 36 37 - check_result "% modprobe $MOD_TARGET 37 + check_result "% insmod test_modules/$MOD_TARGET.ko 38 38 $MOD_TARGET: ${MOD_TARGET}_init 39 - % modprobe $MOD_LIVEPATCH 39 + % insmod test_modules/$MOD_LIVEPATCH.ko 40 40 livepatch: enabling patch '$MOD_LIVEPATCH' 41 41 livepatch: '$MOD_LIVEPATCH': initializing patching transition 42 42 $MOD_LIVEPATCH: pre_patch_callback: vmlinux ··· 81 81 unload_lp $MOD_LIVEPATCH 82 82 unload_mod $MOD_TARGET 83 83 84 - check_result "% modprobe $MOD_LIVEPATCH 84 + check_result "% insmod test_modules/$MOD_LIVEPATCH.ko 85 85 livepatch: enabling patch '$MOD_LIVEPATCH' 86 86 livepatch: '$MOD_LIVEPATCH': initializing patching transition 87 87 $MOD_LIVEPATCH: pre_patch_callback: vmlinux ··· 89 89 livepatch: '$MOD_LIVEPATCH': completing patching transition 90 90 $MOD_LIVEPATCH: post_patch_callback: vmlinux 91 91 livepatch: '$MOD_LIVEPATCH': patching complete 92 - % modprobe $MOD_TARGET 92 + % insmod test_modules/$MOD_TARGET.ko 93 93 livepatch: applying patch '$MOD_LIVEPATCH' to loading module '$MOD_TARGET' 94 94 $MOD_LIVEPATCH: pre_patch_callback: $MOD_TARGET -> [MODULE_STATE_COMING] Full formed, running module_init 95 95 $MOD_LIVEPATCH: post_patch_callback: $MOD_TARGET -> [MODULE_STATE_COMING] Full formed, running module_init ··· 129 129 disable_lp $MOD_LIVEPATCH 130 130 unload_lp $MOD_LIVEPATCH 131 131 132 - check_result "% modprobe $MOD_TARGET 132 + check_result "% insmod test_modules/$MOD_TARGET.ko 133 133 $MOD_TARGET: ${MOD_TARGET}_init 134 - % modprobe $MOD_LIVEPATCH 134 + % insmod test_modules/$MOD_LIVEPATCH.ko 135 135 livepatch: enabling patch '$MOD_LIVEPATCH' 136 136 livepatch: '$MOD_LIVEPATCH': initializing patching transition 137 137 $MOD_LIVEPATCH: pre_patch_callback: vmlinux ··· 177 177 disable_lp $MOD_LIVEPATCH 178 178 unload_lp $MOD_LIVEPATCH 179 179 180 - check_result "% modprobe $MOD_LIVEPATCH 180 + check_result "% insmod test_modules/$MOD_LIVEPATCH.ko 181 181 livepatch: enabling patch '$MOD_LIVEPATCH' 182 182 livepatch: '$MOD_LIVEPATCH': initializing patching transition 183 183 $MOD_LIVEPATCH: pre_patch_callback: vmlinux ··· 185 185 livepatch: '$MOD_LIVEPATCH': completing patching transition 186 186 $MOD_LIVEPATCH: post_patch_callback: vmlinux 187 187 livepatch: '$MOD_LIVEPATCH': patching complete 188 - % modprobe $MOD_TARGET 188 + % insmod test_modules/$MOD_TARGET.ko 189 189 livepatch: applying patch '$MOD_LIVEPATCH' to loading module '$MOD_TARGET' 190 190 $MOD_LIVEPATCH: pre_patch_callback: $MOD_TARGET -> [MODULE_STATE_COMING] Full formed, running module_init 191 191 $MOD_LIVEPATCH: post_patch_callback: $MOD_TARGET -> [MODULE_STATE_COMING] Full formed, running module_init ··· 219 219 disable_lp $MOD_LIVEPATCH 220 220 unload_lp $MOD_LIVEPATCH 221 221 222 - check_result "% modprobe $MOD_LIVEPATCH 222 + check_result "% insmod test_modules/$MOD_LIVEPATCH.ko 223 223 livepatch: enabling patch '$MOD_LIVEPATCH' 224 224 livepatch: '$MOD_LIVEPATCH': initializing patching transition 225 225 $MOD_LIVEPATCH: pre_patch_callback: vmlinux ··· 254 254 load_failing_mod $MOD_LIVEPATCH pre_patch_ret=-19 255 255 unload_mod $MOD_TARGET 256 256 257 - check_result "% modprobe $MOD_TARGET 257 + check_result "% insmod test_modules/$MOD_TARGET.ko 258 258 $MOD_TARGET: ${MOD_TARGET}_init 259 - % modprobe $MOD_LIVEPATCH pre_patch_ret=-19 259 + % insmod test_modules/$MOD_LIVEPATCH.ko pre_patch_ret=-19 260 260 livepatch: enabling patch '$MOD_LIVEPATCH' 261 261 livepatch: '$MOD_LIVEPATCH': initializing patching transition 262 262 test_klp_callbacks_demo: pre_patch_callback: vmlinux ··· 265 265 livepatch: '$MOD_LIVEPATCH': canceling patching transition, going to unpatch 266 266 livepatch: '$MOD_LIVEPATCH': completing unpatching transition 267 267 livepatch: '$MOD_LIVEPATCH': unpatching complete 268 - modprobe: ERROR: could not insert '$MOD_LIVEPATCH': No such device 268 + insmod: ERROR: could not insert module test_modules/$MOD_LIVEPATCH.ko: No such device 269 269 % rmmod $MOD_TARGET 270 270 $MOD_TARGET: ${MOD_TARGET}_exit" 271 271 ··· 295 295 disable_lp $MOD_LIVEPATCH 296 296 unload_lp $MOD_LIVEPATCH 297 297 298 - check_result "% modprobe $MOD_LIVEPATCH 298 + check_result "% insmod test_modules/$MOD_LIVEPATCH.ko 299 299 livepatch: enabling patch '$MOD_LIVEPATCH' 300 300 livepatch: '$MOD_LIVEPATCH': initializing patching transition 301 301 $MOD_LIVEPATCH: pre_patch_callback: vmlinux ··· 304 304 $MOD_LIVEPATCH: post_patch_callback: vmlinux 305 305 livepatch: '$MOD_LIVEPATCH': patching complete 306 306 % echo -19 > /sys/module/$MOD_LIVEPATCH/parameters/pre_patch_ret 307 - % modprobe $MOD_TARGET 307 + % insmod test_modules/$MOD_TARGET.ko 308 308 livepatch: applying patch '$MOD_LIVEPATCH' to loading module '$MOD_TARGET' 309 309 $MOD_LIVEPATCH: pre_patch_callback: $MOD_TARGET -> [MODULE_STATE_COMING] Full formed, running module_init 310 310 livepatch: pre-patch callback failed for object '$MOD_TARGET' 311 311 livepatch: patch '$MOD_LIVEPATCH' failed for module '$MOD_TARGET', refusing to load module '$MOD_TARGET' 312 - modprobe: ERROR: could not insert '$MOD_TARGET': No such device 312 + insmod: ERROR: could not insert module test_modules/$MOD_TARGET.ko: No such device 313 313 % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled 314 314 livepatch: '$MOD_LIVEPATCH': initializing unpatching transition 315 315 $MOD_LIVEPATCH: pre_unpatch_callback: vmlinux ··· 340 340 unload_lp $MOD_LIVEPATCH 341 341 unload_mod $MOD_TARGET_BUSY 342 342 343 - check_result "% modprobe $MOD_TARGET_BUSY block_transition=N 343 + check_result "% insmod test_modules/$MOD_TARGET_BUSY.ko block_transition=N 344 344 $MOD_TARGET_BUSY: ${MOD_TARGET_BUSY}_init 345 345 $MOD_TARGET_BUSY: busymod_work_func enter 346 346 $MOD_TARGET_BUSY: busymod_work_func exit 347 - % modprobe $MOD_LIVEPATCH 347 + % insmod test_modules/$MOD_LIVEPATCH.ko 348 348 livepatch: enabling patch '$MOD_LIVEPATCH' 349 349 livepatch: '$MOD_LIVEPATCH': initializing patching transition 350 350 $MOD_LIVEPATCH: pre_patch_callback: vmlinux ··· 354 354 $MOD_LIVEPATCH: post_patch_callback: vmlinux 355 355 $MOD_LIVEPATCH: post_patch_callback: $MOD_TARGET_BUSY -> [MODULE_STATE_LIVE] Normal state 356 356 livepatch: '$MOD_LIVEPATCH': patching complete 357 - % modprobe $MOD_TARGET 357 + % insmod test_modules/$MOD_TARGET.ko 358 358 livepatch: applying patch '$MOD_LIVEPATCH' to loading module '$MOD_TARGET' 359 359 $MOD_LIVEPATCH: pre_patch_callback: $MOD_TARGET -> [MODULE_STATE_COMING] Full formed, running module_init 360 360 $MOD_LIVEPATCH: post_patch_callback: $MOD_TARGET -> [MODULE_STATE_COMING] Full formed, running module_init ··· 421 421 unload_lp $MOD_LIVEPATCH 422 422 unload_mod $MOD_TARGET_BUSY 423 423 424 - check_result "% modprobe $MOD_TARGET_BUSY block_transition=Y 424 + check_result "% insmod test_modules/$MOD_TARGET_BUSY.ko block_transition=Y 425 425 $MOD_TARGET_BUSY: ${MOD_TARGET_BUSY}_init 426 426 $MOD_TARGET_BUSY: busymod_work_func enter 427 - % modprobe $MOD_LIVEPATCH 427 + % insmod test_modules/$MOD_LIVEPATCH.ko 428 428 livepatch: enabling patch '$MOD_LIVEPATCH' 429 429 livepatch: '$MOD_LIVEPATCH': initializing patching transition 430 430 $MOD_LIVEPATCH: pre_patch_callback: vmlinux 431 431 $MOD_LIVEPATCH: pre_patch_callback: $MOD_TARGET_BUSY -> [MODULE_STATE_LIVE] Normal state 432 432 livepatch: '$MOD_LIVEPATCH': starting patching transition 433 - % modprobe $MOD_TARGET 433 + % insmod test_modules/$MOD_TARGET.ko 434 434 livepatch: applying patch '$MOD_LIVEPATCH' to loading module '$MOD_TARGET' 435 435 $MOD_LIVEPATCH: pre_patch_callback: $MOD_TARGET -> [MODULE_STATE_COMING] Full formed, running module_init 436 436 $MOD_TARGET: ${MOD_TARGET}_init ··· 467 467 unload_lp $MOD_LIVEPATCH2 468 468 unload_lp $MOD_LIVEPATCH 469 469 470 - check_result "% modprobe $MOD_LIVEPATCH 470 + check_result "% insmod test_modules/$MOD_LIVEPATCH.ko 471 471 livepatch: enabling patch '$MOD_LIVEPATCH' 472 472 livepatch: '$MOD_LIVEPATCH': initializing patching transition 473 473 $MOD_LIVEPATCH: pre_patch_callback: vmlinux ··· 475 475 livepatch: '$MOD_LIVEPATCH': completing patching transition 476 476 $MOD_LIVEPATCH: post_patch_callback: vmlinux 477 477 livepatch: '$MOD_LIVEPATCH': patching complete 478 - % modprobe $MOD_LIVEPATCH2 478 + % insmod test_modules/$MOD_LIVEPATCH2.ko 479 479 livepatch: enabling patch '$MOD_LIVEPATCH2' 480 480 livepatch: '$MOD_LIVEPATCH2': initializing patching transition 481 481 $MOD_LIVEPATCH2: pre_patch_callback: vmlinux ··· 523 523 unload_lp $MOD_LIVEPATCH2 524 524 unload_lp $MOD_LIVEPATCH 525 525 526 - check_result "% modprobe $MOD_LIVEPATCH 526 + check_result "% insmod test_modules/$MOD_LIVEPATCH.ko 527 527 livepatch: enabling patch '$MOD_LIVEPATCH' 528 528 livepatch: '$MOD_LIVEPATCH': initializing patching transition 529 529 $MOD_LIVEPATCH: pre_patch_callback: vmlinux ··· 531 531 livepatch: '$MOD_LIVEPATCH': completing patching transition 532 532 $MOD_LIVEPATCH: post_patch_callback: vmlinux 533 533 livepatch: '$MOD_LIVEPATCH': patching complete 534 - % modprobe $MOD_LIVEPATCH2 replace=1 534 + % insmod test_modules/$MOD_LIVEPATCH2.ko replace=1 535 535 livepatch: enabling patch '$MOD_LIVEPATCH2' 536 536 livepatch: '$MOD_LIVEPATCH2': initializing patching transition 537 537 $MOD_LIVEPATCH2: pre_patch_callback: vmlinux
+3 -3
tools/testing/selftests/livepatch/test-ftrace.sh
··· 35 35 unload_lp $MOD_LIVEPATCH 36 36 37 37 check_result "livepatch: kernel.ftrace_enabled = 0 38 - % modprobe $MOD_LIVEPATCH 38 + % insmod test_modules/$MOD_LIVEPATCH.ko 39 39 livepatch: enabling patch '$MOD_LIVEPATCH' 40 40 livepatch: '$MOD_LIVEPATCH': initializing patching transition 41 41 livepatch: failed to register ftrace handler for function 'cmdline_proc_show' (-16) ··· 44 44 livepatch: '$MOD_LIVEPATCH': canceling patching transition, going to unpatch 45 45 livepatch: '$MOD_LIVEPATCH': completing unpatching transition 46 46 livepatch: '$MOD_LIVEPATCH': unpatching complete 47 - modprobe: ERROR: could not insert '$MOD_LIVEPATCH': Device or resource busy 47 + insmod: ERROR: could not insert module test_modules/$MOD_LIVEPATCH.ko: Device or resource busy 48 48 livepatch: kernel.ftrace_enabled = 1 49 - % modprobe $MOD_LIVEPATCH 49 + % insmod test_modules/$MOD_LIVEPATCH.ko 50 50 livepatch: enabling patch '$MOD_LIVEPATCH' 51 51 livepatch: '$MOD_LIVEPATCH': initializing patching transition 52 52 livepatch: '$MOD_LIVEPATCH': starting patching transition
+5 -5
tools/testing/selftests/livepatch/test-livepatch.sh
··· 31 31 die "livepatch kselftest(s) failed" 32 32 fi 33 33 34 - check_result "% modprobe $MOD_LIVEPATCH 34 + check_result "% insmod test_modules/$MOD_LIVEPATCH.ko 35 35 livepatch: enabling patch '$MOD_LIVEPATCH' 36 36 livepatch: '$MOD_LIVEPATCH': initializing patching transition 37 37 livepatch: '$MOD_LIVEPATCH': starting patching transition ··· 75 75 grep 'live patched' /proc/cmdline > /dev/kmsg 76 76 grep 'live patched' /proc/meminfo > /dev/kmsg 77 77 78 - check_result "% modprobe $MOD_LIVEPATCH 78 + check_result "% insmod test_modules/$MOD_LIVEPATCH.ko 79 79 livepatch: enabling patch '$MOD_LIVEPATCH' 80 80 livepatch: '$MOD_LIVEPATCH': initializing patching transition 81 81 livepatch: '$MOD_LIVEPATCH': starting patching transition 82 82 livepatch: '$MOD_LIVEPATCH': completing patching transition 83 83 livepatch: '$MOD_LIVEPATCH': patching complete 84 84 $MOD_LIVEPATCH: this has been live patched 85 - % modprobe $MOD_REPLACE replace=0 85 + % insmod test_modules/$MOD_REPLACE.ko replace=0 86 86 livepatch: enabling patch '$MOD_REPLACE' 87 87 livepatch: '$MOD_REPLACE': initializing patching transition 88 88 livepatch: '$MOD_REPLACE': starting patching transition ··· 135 135 grep 'live patched' /proc/cmdline > /dev/kmsg 136 136 grep 'live patched' /proc/meminfo > /dev/kmsg 137 137 138 - check_result "% modprobe $MOD_LIVEPATCH 138 + check_result "% insmod test_modules/$MOD_LIVEPATCH.ko 139 139 livepatch: enabling patch '$MOD_LIVEPATCH' 140 140 livepatch: '$MOD_LIVEPATCH': initializing patching transition 141 141 livepatch: '$MOD_LIVEPATCH': starting patching transition 142 142 livepatch: '$MOD_LIVEPATCH': completing patching transition 143 143 livepatch: '$MOD_LIVEPATCH': patching complete 144 144 $MOD_LIVEPATCH: this has been live patched 145 - % modprobe $MOD_REPLACE replace=1 145 + % insmod test_modules/$MOD_REPLACE.ko replace=1 146 146 livepatch: enabling patch '$MOD_REPLACE' 147 147 livepatch: '$MOD_REPLACE': initializing patching transition 148 148 livepatch: '$MOD_REPLACE': starting patching transition
+1 -1
tools/testing/selftests/livepatch/test-shadow-vars.sh
··· 16 16 load_mod $MOD_TEST 17 17 unload_mod $MOD_TEST 18 18 19 - check_result "% modprobe $MOD_TEST 19 + check_result "% insmod test_modules/$MOD_TEST.ko 20 20 $MOD_TEST: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 21 21 $MOD_TEST: got expected NULL result 22 22 $MOD_TEST: shadow_ctor: PTR3 -> PTR2
+9 -9
tools/testing/selftests/livepatch/test-state.sh
··· 19 19 disable_lp $MOD_LIVEPATCH 20 20 unload_lp $MOD_LIVEPATCH 21 21 22 - check_result "% modprobe $MOD_LIVEPATCH 22 + check_result "% insmod test_modules/$MOD_LIVEPATCH.ko 23 23 livepatch: enabling patch '$MOD_LIVEPATCH' 24 24 livepatch: '$MOD_LIVEPATCH': initializing patching transition 25 25 $MOD_LIVEPATCH: pre_patch_callback: vmlinux ··· 51 51 disable_lp $MOD_LIVEPATCH2 52 52 unload_lp $MOD_LIVEPATCH2 53 53 54 - check_result "% modprobe $MOD_LIVEPATCH 54 + check_result "% insmod test_modules/$MOD_LIVEPATCH.ko 55 55 livepatch: enabling patch '$MOD_LIVEPATCH' 56 56 livepatch: '$MOD_LIVEPATCH': initializing patching transition 57 57 $MOD_LIVEPATCH: pre_patch_callback: vmlinux ··· 61 61 $MOD_LIVEPATCH: post_patch_callback: vmlinux 62 62 $MOD_LIVEPATCH: fix_console_loglevel: fixing console_loglevel 63 63 livepatch: '$MOD_LIVEPATCH': patching complete 64 - % modprobe $MOD_LIVEPATCH2 64 + % insmod test_modules/$MOD_LIVEPATCH2.ko 65 65 livepatch: enabling patch '$MOD_LIVEPATCH2' 66 66 livepatch: '$MOD_LIVEPATCH2': initializing patching transition 67 67 $MOD_LIVEPATCH2: pre_patch_callback: vmlinux ··· 96 96 unload_lp $MOD_LIVEPATCH2 97 97 unload_lp $MOD_LIVEPATCH3 98 98 99 - check_result "% modprobe $MOD_LIVEPATCH2 99 + check_result "% insmod test_modules/$MOD_LIVEPATCH2.ko 100 100 livepatch: enabling patch '$MOD_LIVEPATCH2' 101 101 livepatch: '$MOD_LIVEPATCH2': initializing patching transition 102 102 $MOD_LIVEPATCH2: pre_patch_callback: vmlinux ··· 106 106 $MOD_LIVEPATCH2: post_patch_callback: vmlinux 107 107 $MOD_LIVEPATCH2: fix_console_loglevel: fixing console_loglevel 108 108 livepatch: '$MOD_LIVEPATCH2': patching complete 109 - % modprobe $MOD_LIVEPATCH3 109 + % insmod test_modules/$MOD_LIVEPATCH3.ko 110 110 livepatch: enabling patch '$MOD_LIVEPATCH3' 111 111 livepatch: '$MOD_LIVEPATCH3': initializing patching transition 112 112 $MOD_LIVEPATCH3: pre_patch_callback: vmlinux ··· 117 117 $MOD_LIVEPATCH3: fix_console_loglevel: taking over the console_loglevel change 118 118 livepatch: '$MOD_LIVEPATCH3': patching complete 119 119 % rmmod $MOD_LIVEPATCH2 120 - % modprobe $MOD_LIVEPATCH2 120 + % insmod test_modules/$MOD_LIVEPATCH2.ko 121 121 livepatch: enabling patch '$MOD_LIVEPATCH2' 122 122 livepatch: '$MOD_LIVEPATCH2': initializing patching transition 123 123 $MOD_LIVEPATCH2: pre_patch_callback: vmlinux ··· 149 149 disable_lp $MOD_LIVEPATCH2 150 150 unload_lp $MOD_LIVEPATCH2 151 151 152 - check_result "% modprobe $MOD_LIVEPATCH2 152 + check_result "% insmod test_modules/$MOD_LIVEPATCH2.ko 153 153 livepatch: enabling patch '$MOD_LIVEPATCH2' 154 154 livepatch: '$MOD_LIVEPATCH2': initializing patching transition 155 155 $MOD_LIVEPATCH2: pre_patch_callback: vmlinux ··· 159 159 $MOD_LIVEPATCH2: post_patch_callback: vmlinux 160 160 $MOD_LIVEPATCH2: fix_console_loglevel: fixing console_loglevel 161 161 livepatch: '$MOD_LIVEPATCH2': patching complete 162 - % modprobe $MOD_LIVEPATCH 162 + % insmod test_modules/$MOD_LIVEPATCH.ko 163 163 livepatch: Livepatch patch ($MOD_LIVEPATCH) is not compatible with the already installed livepatches. 164 - modprobe: ERROR: could not insert '$MOD_LIVEPATCH': Invalid argument 164 + insmod: ERROR: could not insert module test_modules/$MOD_LIVEPATCH.ko: Invalid parameters 165 165 % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH2/enabled 166 166 livepatch: '$MOD_LIVEPATCH2': initializing unpatching transition 167 167 $MOD_LIVEPATCH2: pre_unpatch_callback: vmlinux
+3 -3
tools/testing/selftests/livepatch/test-sysfs.sh
··· 27 27 28 28 unload_lp $MOD_LIVEPATCH 29 29 30 - check_result "% modprobe $MOD_LIVEPATCH 30 + check_result "% insmod test_modules/$MOD_LIVEPATCH.ko 31 31 livepatch: enabling patch '$MOD_LIVEPATCH' 32 32 livepatch: '$MOD_LIVEPATCH': initializing patching transition 33 33 livepatch: '$MOD_LIVEPATCH': starting patching transition ··· 56 56 disable_lp $MOD_LIVEPATCH 57 57 unload_lp $MOD_LIVEPATCH 58 58 59 - check_result "% modprobe test_klp_callbacks_demo 59 + check_result "% insmod test_modules/test_klp_callbacks_demo.ko 60 60 livepatch: enabling patch 'test_klp_callbacks_demo' 61 61 livepatch: 'test_klp_callbacks_demo': initializing patching transition 62 62 test_klp_callbacks_demo: pre_patch_callback: vmlinux ··· 64 64 livepatch: 'test_klp_callbacks_demo': completing patching transition 65 65 test_klp_callbacks_demo: post_patch_callback: vmlinux 66 66 livepatch: 'test_klp_callbacks_demo': patching complete 67 - % modprobe test_klp_callbacks_mod 67 + % insmod test_modules/test_klp_callbacks_mod.ko 68 68 livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' 69 69 test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init 70 70 test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init
+19
tools/testing/selftests/livepatch/test_modules/Makefile
··· 1 + TESTMODS_DIR := $(realpath $(dir $(abspath $(lastword $(MAKEFILE_LIST))))) 2 + KDIR ?= /lib/modules/$(shell uname -r)/build 3 + 4 + obj-m += test_klp_atomic_replace.o \ 5 + test_klp_callbacks_busy.o \ 6 + test_klp_callbacks_demo.o \ 7 + test_klp_callbacks_demo2.o \ 8 + test_klp_callbacks_mod.o \ 9 + test_klp_livepatch.o \ 10 + test_klp_state.o \ 11 + test_klp_state2.o \ 12 + test_klp_state3.o \ 13 + test_klp_shadow_vars.o 14 + 15 + modules: 16 + $(Q)$(MAKE) -C $(KDIR) modules KBUILD_EXTMOD=$(TESTMODS_DIR) 17 + 18 + clean: 19 + $(Q)$(MAKE) -C $(KDIR) clean KBUILD_EXTMOD=$(TESTMODS_DIR)