.../testing/selftests/livepatch/test-sysfs.sh | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+)
Add selftest test cases to sysfs attribute 'stack_order'.
Signed-off-by: Wardenjohn <zhangwarden@gmail.com>
---
.../testing/selftests/livepatch/test-sysfs.sh | 74 +++++++++++++++++++
1 file changed, 74 insertions(+)
diff --git a/tools/testing/selftests/livepatch/test-sysfs.sh b/tools/testing/selftests/livepatch/test-sysfs.sh
index 05a14f5a7bfb..71a2e95636b1 100755
--- a/tools/testing/selftests/livepatch/test-sysfs.sh
+++ b/tools/testing/selftests/livepatch/test-sysfs.sh
@@ -5,6 +5,8 @@
. $(dirname $0)/functions.sh
MOD_LIVEPATCH=test_klp_livepatch
+MOD_LIVEPATCH2=test_klp_callbacks_demo
+MOD_LIVEPATCH3=test_klp_syscall
setup_config
@@ -131,4 +133,76 @@ livepatch: '$MOD_LIVEPATCH': completing unpatching transition
livepatch: '$MOD_LIVEPATCH': unpatching complete
% rmmod $MOD_LIVEPATCH"
+start_test "sysfs test stack_order read"
+
+load_lp $MOD_LIVEPATCH
+
+check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--"
+check_sysfs_value "$MOD_LIVEPATCH" "stack_order" "1"
+
+load_lp $MOD_LIVEPATCH2
+
+check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--"
+check_sysfs_value "$MOD_LIVEPATCH2" "stack_order" "2"
+
+load_lp $MOD_LIVEPATCH3
+
+check_sysfs_rights "$MOD_LIVEPATCH3" "stack_order" "-r--r--r--"
+check_sysfs_value "$MOD_LIVEPATCH3" "stack_order" "3"
+
+disable_lp $MOD_LIVEPATCH2
+unload_lp $MOD_LIVEPATCH2
+
+check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--"
+check_sysfs_value "$MOD_LIVEPATCH" "stack_order" "1"
+check_sysfs_rights "$MOD_LIVEPATCH3" "stack_order" "-r--r--r--"
+check_sysfs_value "$MOD_LIVEPATCH3" "stack_order" "2"
+
+disable_lp $MOD_LIVEPATCH3
+unload_lp $MOD_LIVEPATCH3
+
+disable_lp $MOD_LIVEPATCH
+unload_lp $MOD_LIVEPATCH
+
+check_result "% insmod test_modules/$MOD_LIVEPATCH.ko
+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
+% 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_LIVEPATCH3.ko
+livepatch: enabling patch '$MOD_LIVEPATCH3'
+livepatch: '$MOD_LIVEPATCH3': initializing patching transition
+livepatch: '$MOD_LIVEPATCH3': starting patching transition
+livepatch: '$MOD_LIVEPATCH3': completing patching transition
+livepatch: '$MOD_LIVEPATCH3': patching complete
+% echo 0 > /sys/kernel/livepatch/$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
+% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH3/enabled
+livepatch: '$MOD_LIVEPATCH3': initializing unpatching transition
+livepatch: '$MOD_LIVEPATCH3': starting unpatching transition
+livepatch: '$MOD_LIVEPATCH3': completing unpatching transition
+livepatch: '$MOD_LIVEPATCH3': unpatching complete
+% rmmod $MOD_LIVEPATCH3
+% 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"
+
exit 0
--
2.43.5
On Fri 2024-10-11 23:11:51, Wardenjohn wrote: > Add selftest test cases to sysfs attribute 'stack_order'. > > Signed-off-by: Wardenjohn <zhangwarden@gmail.com> > --- > .../testing/selftests/livepatch/test-sysfs.sh | 74 +++++++++++++++++++ > 1 file changed, 74 insertions(+) > > diff --git a/tools/testing/selftests/livepatch/test-sysfs.sh b/tools/testing/selftests/livepatch/test-sysfs.sh > index 05a14f5a7bfb..71a2e95636b1 100755 > --- a/tools/testing/selftests/livepatch/test-sysfs.sh > +++ b/tools/testing/selftests/livepatch/test-sysfs.sh > @@ -5,6 +5,8 @@ > . $(dirname $0)/functions.sh > > MOD_LIVEPATCH=test_klp_livepatch > +MOD_LIVEPATCH2=test_klp_callbacks_demo > +MOD_LIVEPATCH3=test_klp_syscall > > setup_config > > @@ -131,4 +133,76 @@ livepatch: '$MOD_LIVEPATCH': completing unpatching transition > livepatch: '$MOD_LIVEPATCH': unpatching complete > % rmmod $MOD_LIVEPATCH" > > +start_test "sysfs test stack_order read" s/read/value/ > + > +load_lp $MOD_LIVEPATCH > + > +check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--" The access rights should be rather tested in the 1st test in test-sysfs.sh. We do not need to check it repeatedly here. > +check_sysfs_value "$MOD_LIVEPATCH" "stack_order" "1" > + > +load_lp $MOD_LIVEPATCH2 > + > +check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--" Same here... > +check_sysfs_value "$MOD_LIVEPATCH2" "stack_order" "2" > + > +load_lp $MOD_LIVEPATCH3 > + > +check_sysfs_rights "$MOD_LIVEPATCH3" "stack_order" "-r--r--r--" > +check_sysfs_value "$MOD_LIVEPATCH3" "stack_order" "3" > + > +disable_lp $MOD_LIVEPATCH2 > +unload_lp $MOD_LIVEPATCH2 > + > +check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--" > +check_sysfs_value "$MOD_LIVEPATCH" "stack_order" "1" > +check_sysfs_rights "$MOD_LIVEPATCH3" "stack_order" "-r--r--r--" > +check_sysfs_value "$MOD_LIVEPATCH3" "stack_order" "2" > + > +disable_lp $MOD_LIVEPATCH3 > +unload_lp $MOD_LIVEPATCH3 > + > +disable_lp $MOD_LIVEPATCH > +unload_lp $MOD_LIVEPATCH Otherwise, it looks good to me. Just to make it clear, I suggest to do the following changes: diff --git a/tools/testing/selftests/livepatch/test-sysfs.sh b/tools/testing/selftests/livepatch/test-sysfs.sh index 71a2e95636b1..e44a051be307 100755 --- a/tools/testing/selftests/livepatch/test-sysfs.sh +++ b/tools/testing/selftests/livepatch/test-sysfs.sh @@ -21,6 +21,8 @@ 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" "replace" "-r--r--r--" +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--" @@ -133,29 +135,24 @@ livepatch: '$MOD_LIVEPATCH': completing unpatching transition livepatch: '$MOD_LIVEPATCH': unpatching complete % rmmod $MOD_LIVEPATCH" -start_test "sysfs test stack_order read" +start_test "sysfs test stack_order value" load_lp $MOD_LIVEPATCH -check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--" check_sysfs_value "$MOD_LIVEPATCH" "stack_order" "1" load_lp $MOD_LIVEPATCH2 -check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--" check_sysfs_value "$MOD_LIVEPATCH2" "stack_order" "2" load_lp $MOD_LIVEPATCH3 -check_sysfs_rights "$MOD_LIVEPATCH3" "stack_order" "-r--r--r--" check_sysfs_value "$MOD_LIVEPATCH3" "stack_order" "3" disable_lp $MOD_LIVEPATCH2 unload_lp $MOD_LIVEPATCH2 -check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--" check_sysfs_value "$MOD_LIVEPATCH" "stack_order" "1" -check_sysfs_rights "$MOD_LIVEPATCH3" "stack_order" "-r--r--r--" check_sysfs_value "$MOD_LIVEPATCH3" "stack_order" "2" disable_lp $MOD_LIVEPATCH3 With the above changes: Reviewed-by: Petr Mladek <pmladek@suse.com> Tested-by: Petr Mladek <pmladek@suse.com> Please, try to send the next version together with the patch adding the "stack_order" attribute. Best Regards, Petr
What's more, I have open a pull request of the user space tool kpatch[1] to use this new kernel sysfs attribute 'stack_order'. Maintainers who feel interesting in this function can come for a look. Best Regards. Wardenjohn. [1]: https://github.com/dynup/kpatch/pull/1419
Hi, Petr. > On Oct 23, 2024, at 20:38, Petr Mladek <pmladek@suse.com> wrote: > > Please, try to send the next version together with the patch adding > the "stack_order" attribute. > Do you mean I should resend the patch of "livepatch: Add stack_order sysfs attribute" again with this "livepatch selftest" patch? Regards. Wardenjohn.
> On Oct 11, 2024, at 23:11, Wardenjohn <zhangwarden@gmail.com> wrote: > > Add selftest test cases to sysfs attribute 'stack_order'. > > Signed-off-by: Wardenjohn <zhangwarden@gmail.com> > --- > .../testing/selftests/livepatch/test-sysfs.sh | 74 +++++++++++++++++++ > 1 file changed, 74 insertions(+) > > diff --git a/tools/testing/selftests/livepatch/test-sysfs.sh b/tools/testing/selftests/livepatch/test-sysfs.sh > index 05a14f5a7bfb..71a2e95636b1 100755 > --- a/tools/testing/selftests/livepatch/test-sysfs.sh > +++ b/tools/testing/selftests/livepatch/test-sysfs.sh > @@ -5,6 +5,8 @@ > . $(dirname $0)/functions.sh > > MOD_LIVEPATCH=test_klp_livepatch > +MOD_LIVEPATCH2=test_klp_callbacks_demo > +MOD_LIVEPATCH3=test_klp_syscall > > setup_config > > @@ -131,4 +133,76 @@ livepatch: '$MOD_LIVEPATCH': completing unpatching transition > livepatch: '$MOD_LIVEPATCH': unpatching complete > % rmmod $MOD_LIVEPATCH" > > +start_test "sysfs test stack_order read" > + > +load_lp $MOD_LIVEPATCH > + > +check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--" > +check_sysfs_value "$MOD_LIVEPATCH" "stack_order" "1" > + > +load_lp $MOD_LIVEPATCH2 > + > +check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--" > +check_sysfs_value "$MOD_LIVEPATCH2" "stack_order" "2" > + > +load_lp $MOD_LIVEPATCH3 > + > +check_sysfs_rights "$MOD_LIVEPATCH3" "stack_order" "-r--r--r--" > +check_sysfs_value "$MOD_LIVEPATCH3" "stack_order" "3" > + > +disable_lp $MOD_LIVEPATCH2 > +unload_lp $MOD_LIVEPATCH2 > + > +check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--" > +check_sysfs_value "$MOD_LIVEPATCH" "stack_order" "1" > +check_sysfs_rights "$MOD_LIVEPATCH3" "stack_order" "-r--r--r--" > +check_sysfs_value "$MOD_LIVEPATCH3" "stack_order" "2" > + > +disable_lp $MOD_LIVEPATCH3 > +unload_lp $MOD_LIVEPATCH3 > + > +disable_lp $MOD_LIVEPATCH > +unload_lp $MOD_LIVEPATCH > + > +check_result "% insmod test_modules/$MOD_LIVEPATCH.ko > +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 > +% 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_LIVEPATCH3.ko > +livepatch: enabling patch '$MOD_LIVEPATCH3' > +livepatch: '$MOD_LIVEPATCH3': initializing patching transition > +livepatch: '$MOD_LIVEPATCH3': starting patching transition > +livepatch: '$MOD_LIVEPATCH3': completing patching transition > +livepatch: '$MOD_LIVEPATCH3': patching complete > +% echo 0 > /sys/kernel/livepatch/$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 > +% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH3/enabled > +livepatch: '$MOD_LIVEPATCH3': initializing unpatching transition > +livepatch: '$MOD_LIVEPATCH3': starting unpatching transition > +livepatch: '$MOD_LIVEPATCH3': completing unpatching transition > +livepatch: '$MOD_LIVEPATCH3': unpatching complete > +% rmmod $MOD_LIVEPATCH3 > +% 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" > + > exit 0 > -- > 2.43.5 > Hi, maintainers. Any suggestions of this selftest case? Regards. Wardenjohn
© 2016 - 2024 Red Hat, Inc.