-
-
Notifications
You must be signed in to change notification settings - Fork 45
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a test for livepatch sysfs entries. Signed-off-by: Song Liu <[email protected]> Reviewed-by: Petr Mladek <[email protected]> Signed-off-by: Petr Mladek <[email protected]> Link: https://lore.kernel.org/r/[email protected]
- Loading branch information
1 parent
bb26cfd
commit ff1b80e
Showing
3 changed files
with
122 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
#!/bin/bash | ||
# SPDX-License-Identifier: GPL-2.0 | ||
# Copyright (C) 2022 Song Liu <[email protected]> | ||
|
||
. $(dirname $0)/functions.sh | ||
|
||
MOD_LIVEPATCH=test_klp_livepatch | ||
|
||
setup_config | ||
|
||
# - load a livepatch and verifies the sysfs entries work as expected | ||
|
||
start_test "sysfs test" | ||
|
||
load_lp $MOD_LIVEPATCH | ||
|
||
check_sysfs_rights "$MOD_LIVEPATCH" "" "drwxr-xr-x" | ||
check_sysfs_rights "$MOD_LIVEPATCH" "enabled" "-rw-r--r--" | ||
check_sysfs_value "$MOD_LIVEPATCH" "enabled" "1" | ||
check_sysfs_rights "$MOD_LIVEPATCH" "force" "--w-------" | ||
check_sysfs_rights "$MOD_LIVEPATCH" "transition" "-r--r--r--" | ||
check_sysfs_value "$MOD_LIVEPATCH" "transition" "0" | ||
check_sysfs_rights "$MOD_LIVEPATCH" "vmlinux/patched" "-r--r--r--" | ||
check_sysfs_value "$MOD_LIVEPATCH" "vmlinux/patched" "1" | ||
|
||
disable_lp $MOD_LIVEPATCH | ||
|
||
unload_lp $MOD_LIVEPATCH | ||
|
||
check_result "% modprobe $MOD_LIVEPATCH | ||
livepatch: enabling patch '$MOD_LIVEPATCH' | ||
livepatch: '$MOD_LIVEPATCH': initializing patching transition | ||
livepatch: '$MOD_LIVEPATCH': starting patching transition | ||
livepatch: '$MOD_LIVEPATCH': completing patching transition | ||
livepatch: '$MOD_LIVEPATCH': patching complete | ||
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled | ||
livepatch: '$MOD_LIVEPATCH': initializing unpatching transition | ||
livepatch: '$MOD_LIVEPATCH': starting unpatching transition | ||
livepatch: '$MOD_LIVEPATCH': completing unpatching transition | ||
livepatch: '$MOD_LIVEPATCH': unpatching complete | ||
% rmmod $MOD_LIVEPATCH" | ||
|
||
start_test "sysfs test object/patched" | ||
|
||
MOD_LIVEPATCH=test_klp_callbacks_demo | ||
MOD_TARGET=test_klp_callbacks_mod | ||
load_lp $MOD_LIVEPATCH | ||
|
||
# check the "patch" file changes as target module loads/unloads | ||
check_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0" | ||
load_mod $MOD_TARGET | ||
check_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "1" | ||
unload_mod $MOD_TARGET | ||
check_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0" | ||
|
||
disable_lp $MOD_LIVEPATCH | ||
unload_lp $MOD_LIVEPATCH | ||
|
||
check_result "% modprobe test_klp_callbacks_demo | ||
livepatch: enabling patch 'test_klp_callbacks_demo' | ||
livepatch: 'test_klp_callbacks_demo': initializing patching transition | ||
test_klp_callbacks_demo: pre_patch_callback: vmlinux | ||
livepatch: 'test_klp_callbacks_demo': starting patching transition | ||
livepatch: 'test_klp_callbacks_demo': completing patching transition | ||
test_klp_callbacks_demo: post_patch_callback: vmlinux | ||
livepatch: 'test_klp_callbacks_demo': patching complete | ||
% modprobe test_klp_callbacks_mod | ||
livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' | ||
test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init | ||
test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init | ||
test_klp_callbacks_mod: test_klp_callbacks_mod_init | ||
% rmmod test_klp_callbacks_mod | ||
test_klp_callbacks_mod: test_klp_callbacks_mod_exit | ||
test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away | ||
livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' | ||
test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away | ||
% echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled | ||
livepatch: 'test_klp_callbacks_demo': initializing unpatching transition | ||
test_klp_callbacks_demo: pre_unpatch_callback: vmlinux | ||
livepatch: 'test_klp_callbacks_demo': starting unpatching transition | ||
livepatch: 'test_klp_callbacks_demo': completing unpatching transition | ||
test_klp_callbacks_demo: post_unpatch_callback: vmlinux | ||
livepatch: 'test_klp_callbacks_demo': unpatching complete | ||
% rmmod test_klp_callbacks_demo" | ||
|
||
exit 0 |