mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
selftests: livepatch: Check if patched sysfs attribute exists
The commit bb26cfd9e7
("livepatch: add sysfs entry "patched" for each klp_object") was merged
in v6.1, introducing a new sysfs attribute.
In order to run the selftests on older kernels, check if given kernel
has support for the attribute. If the attribute is not supported, skip
the checks.
Along with this change, use MOD_LIVEPATCH2 variable instead of
reassigning a new value to MOD_LIVEPATCH, and also use the variable
names in the check_result, to avoid using the module names.
Signed-off-by: Marcos Paulo de Souza <mpdesouza@suse.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Acked-by: Joe Lawrence <joe.lawrence@redhat.com>
Link: https://patch.msgid.link/20260504-lp-tests-old-fixes-v5-4-0be26d94ab9a@suse.com
Signed-off-by: Petr Mladek <pmladek@suse.com>
This commit is contained in:
parent
cdc1848ba0
commit
e6b71aefae
|
|
@ -8,6 +8,8 @@ MOD_LIVEPATCH=test_klp_livepatch
|
|||
MOD_LIVEPATCH2=test_klp_callbacks_demo
|
||||
MOD_LIVEPATCH3=test_klp_syscall
|
||||
|
||||
HAS_PATCH_ATTR=0
|
||||
|
||||
setup_config
|
||||
|
||||
# - load a livepatch and verifies the sysfs entries work as expected
|
||||
|
|
@ -25,8 +27,12 @@ check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--"
|
|||
check_sysfs_value "$MOD_LIVEPATCH" "stack_order" "1"
|
||||
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"
|
||||
|
||||
if does_sysfs_exist "$MOD_LIVEPATCH/vmlinux" "patched"; then
|
||||
check_sysfs_rights "$MOD_LIVEPATCH" "vmlinux/patched" "-r--r--r--"
|
||||
check_sysfs_value "$MOD_LIVEPATCH" "vmlinux/patched" "1"
|
||||
HAS_PATCH_ATTR=1
|
||||
fi
|
||||
|
||||
disable_lp $MOD_LIVEPATCH
|
||||
|
||||
|
|
@ -45,48 +51,49 @@ livepatch: '$MOD_LIVEPATCH': completing unpatching transition
|
|||
livepatch: '$MOD_LIVEPATCH': unpatching complete
|
||||
% rmmod $MOD_LIVEPATCH"
|
||||
|
||||
start_test "sysfs test object/patched"
|
||||
if [[ "$HAS_PATCH_ATTR" == "1" ]]; then
|
||||
start_test "sysfs test object/patched"
|
||||
|
||||
MOD_LIVEPATCH=test_klp_callbacks_demo
|
||||
MOD_TARGET=test_klp_callbacks_mod
|
||||
load_lp $MOD_LIVEPATCH
|
||||
MOD_TARGET=test_klp_callbacks_mod
|
||||
load_lp $MOD_LIVEPATCH2
|
||||
|
||||
# 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"
|
||||
# check the "patch" file changes as target module loads/unloads
|
||||
check_sysfs_value "$MOD_LIVEPATCH2" "$MOD_TARGET/patched" "0"
|
||||
load_mod $MOD_TARGET
|
||||
check_sysfs_value "$MOD_LIVEPATCH2" "$MOD_TARGET/patched" "1"
|
||||
unload_mod $MOD_TARGET
|
||||
check_sysfs_value "$MOD_LIVEPATCH2" "$MOD_TARGET/patched" "0"
|
||||
|
||||
disable_lp $MOD_LIVEPATCH
|
||||
unload_lp $MOD_LIVEPATCH
|
||||
disable_lp $MOD_LIVEPATCH2
|
||||
unload_lp $MOD_LIVEPATCH2
|
||||
|
||||
check_result "% insmod test_modules/test_klp_callbacks_demo.ko
|
||||
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
|
||||
% insmod test_modules/test_klp_callbacks_mod.ko
|
||||
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 > $SYSFS_KLP_DIR/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"
|
||||
check_result "% insmod test_modules/$MOD_LIVEPATCH2.ko
|
||||
livepatch: enabling patch '$MOD_LIVEPATCH2'
|
||||
livepatch: '$MOD_LIVEPATCH2': initializing patching transition
|
||||
$MOD_LIVEPATCH2: pre_patch_callback: vmlinux
|
||||
livepatch: '$MOD_LIVEPATCH2': starting patching transition
|
||||
livepatch: '$MOD_LIVEPATCH2': completing patching transition
|
||||
$MOD_LIVEPATCH2: post_patch_callback: vmlinux
|
||||
livepatch: '$MOD_LIVEPATCH2': patching complete
|
||||
% insmod test_modules/$MOD_TARGET.ko
|
||||
livepatch: applying patch '$MOD_LIVEPATCH2' to loading module '$MOD_TARGET'
|
||||
$MOD_LIVEPATCH2: pre_patch_callback: $MOD_TARGET -> [MODULE_STATE_COMING] Full formed, running module_init
|
||||
$MOD_LIVEPATCH2: post_patch_callback: $MOD_TARGET -> [MODULE_STATE_COMING] Full formed, running module_init
|
||||
$MOD_TARGET: test_klp_callbacks_mod_init
|
||||
% rmmod $MOD_TARGET
|
||||
$MOD_TARGET: test_klp_callbacks_mod_exit
|
||||
$MOD_LIVEPATCH2: pre_unpatch_callback: $MOD_TARGET -> [MODULE_STATE_GOING] Going away
|
||||
livepatch: reverting patch '$MOD_LIVEPATCH2' on unloading module '$MOD_TARGET'
|
||||
$MOD_LIVEPATCH2: post_unpatch_callback: $MOD_TARGET -> [MODULE_STATE_GOING] Going away
|
||||
% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH2/enabled
|
||||
livepatch: '$MOD_LIVEPATCH2': initializing unpatching transition
|
||||
$MOD_LIVEPATCH2: pre_unpatch_callback: vmlinux
|
||||
livepatch: '$MOD_LIVEPATCH2': starting unpatching transition
|
||||
livepatch: '$MOD_LIVEPATCH2': completing unpatching transition
|
||||
$MOD_LIVEPATCH2: post_unpatch_callback: vmlinux
|
||||
livepatch: '$MOD_LIVEPATCH2': unpatching complete
|
||||
% rmmod $MOD_LIVEPATCH2"
|
||||
fi
|
||||
|
||||
start_test "sysfs test replace enabled"
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user