~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/livepatch/test-sysfs.sh

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #!/bin/bash
  2 # SPDX-License-Identifier: GPL-2.0
  3 # Copyright (C) 2022 Song Liu <song@kernel.org>
  4 
  5 . $(dirname $0)/functions.sh
  6 
  7 MOD_LIVEPATCH=test_klp_livepatch
  8 
  9 setup_config
 10 
 11 # - load a livepatch and verifies the sysfs entries work as expected
 12 
 13 start_test "sysfs test"
 14 
 15 load_lp $MOD_LIVEPATCH
 16 
 17 check_sysfs_rights "$MOD_LIVEPATCH" "" "drwxr-xr-x"
 18 check_sysfs_rights "$MOD_LIVEPATCH" "enabled" "-rw-r--r--"
 19 check_sysfs_value  "$MOD_LIVEPATCH" "enabled" "1"
 20 check_sysfs_rights "$MOD_LIVEPATCH" "force" "--w-------"
 21 check_sysfs_rights "$MOD_LIVEPATCH" "replace" "-r--r--r--"
 22 check_sysfs_rights "$MOD_LIVEPATCH" "transition" "-r--r--r--"
 23 check_sysfs_value  "$MOD_LIVEPATCH" "transition" "0"
 24 check_sysfs_rights "$MOD_LIVEPATCH" "vmlinux/patched" "-r--r--r--"
 25 check_sysfs_value  "$MOD_LIVEPATCH" "vmlinux/patched" "1"
 26 
 27 disable_lp $MOD_LIVEPATCH
 28 
 29 unload_lp $MOD_LIVEPATCH
 30 
 31 check_result "% insmod test_modules/$MOD_LIVEPATCH.ko
 32 livepatch: enabling patch '$MOD_LIVEPATCH'
 33 livepatch: '$MOD_LIVEPATCH': initializing patching transition
 34 livepatch: '$MOD_LIVEPATCH': starting patching transition
 35 livepatch: '$MOD_LIVEPATCH': completing patching transition
 36 livepatch: '$MOD_LIVEPATCH': patching complete
 37 % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
 38 livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
 39 livepatch: '$MOD_LIVEPATCH': starting unpatching transition
 40 livepatch: '$MOD_LIVEPATCH': completing unpatching transition
 41 livepatch: '$MOD_LIVEPATCH': unpatching complete
 42 % rmmod $MOD_LIVEPATCH"
 43 
 44 start_test "sysfs test object/patched"
 45 
 46 MOD_LIVEPATCH=test_klp_callbacks_demo
 47 MOD_TARGET=test_klp_callbacks_mod
 48 load_lp $MOD_LIVEPATCH
 49 
 50 # check the "patch" file changes as target module loads/unloads
 51 check_sysfs_value  "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0"
 52 load_mod $MOD_TARGET
 53 check_sysfs_value  "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "1"
 54 unload_mod $MOD_TARGET
 55 check_sysfs_value  "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0"
 56 
 57 disable_lp $MOD_LIVEPATCH
 58 unload_lp $MOD_LIVEPATCH
 59 
 60 check_result "% insmod test_modules/test_klp_callbacks_demo.ko
 61 livepatch: enabling patch 'test_klp_callbacks_demo'
 62 livepatch: 'test_klp_callbacks_demo': initializing patching transition
 63 test_klp_callbacks_demo: pre_patch_callback: vmlinux
 64 livepatch: 'test_klp_callbacks_demo': starting patching transition
 65 livepatch: 'test_klp_callbacks_demo': completing patching transition
 66 test_klp_callbacks_demo: post_patch_callback: vmlinux
 67 livepatch: 'test_klp_callbacks_demo': patching complete
 68 % insmod test_modules/test_klp_callbacks_mod.ko
 69 livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod'
 70 test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init
 71 test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init
 72 test_klp_callbacks_mod: test_klp_callbacks_mod_init
 73 % rmmod test_klp_callbacks_mod
 74 test_klp_callbacks_mod: test_klp_callbacks_mod_exit
 75 test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away
 76 livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod'
 77 test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away
 78 % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled
 79 livepatch: 'test_klp_callbacks_demo': initializing unpatching transition
 80 test_klp_callbacks_demo: pre_unpatch_callback: vmlinux
 81 livepatch: 'test_klp_callbacks_demo': starting unpatching transition
 82 livepatch: 'test_klp_callbacks_demo': completing unpatching transition
 83 test_klp_callbacks_demo: post_unpatch_callback: vmlinux
 84 livepatch: 'test_klp_callbacks_demo': unpatching complete
 85 % rmmod test_klp_callbacks_demo"
 86 
 87 start_test "sysfs test replace enabled"
 88 
 89 MOD_LIVEPATCH=test_klp_atomic_replace
 90 load_lp $MOD_LIVEPATCH replace=1
 91 
 92 check_sysfs_rights "$MOD_LIVEPATCH" "replace" "-r--r--r--"
 93 check_sysfs_value  "$MOD_LIVEPATCH" "replace" "1"
 94 
 95 disable_lp $MOD_LIVEPATCH
 96 unload_lp $MOD_LIVEPATCH
 97 
 98 check_result "% insmod test_modules/$MOD_LIVEPATCH.ko replace=1
 99 livepatch: enabling patch '$MOD_LIVEPATCH'
100 livepatch: '$MOD_LIVEPATCH': initializing patching transition
101 livepatch: '$MOD_LIVEPATCH': starting patching transition
102 livepatch: '$MOD_LIVEPATCH': completing patching transition
103 livepatch: '$MOD_LIVEPATCH': patching complete
104 % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
105 livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
106 livepatch: '$MOD_LIVEPATCH': starting unpatching transition
107 livepatch: '$MOD_LIVEPATCH': completing unpatching transition
108 livepatch: '$MOD_LIVEPATCH': unpatching complete
109 % rmmod $MOD_LIVEPATCH"
110 
111 start_test "sysfs test replace disabled"
112 
113 load_lp $MOD_LIVEPATCH replace=0
114 
115 check_sysfs_rights "$MOD_LIVEPATCH" "replace" "-r--r--r--"
116 check_sysfs_value  "$MOD_LIVEPATCH" "replace" "0"
117 
118 disable_lp $MOD_LIVEPATCH
119 unload_lp $MOD_LIVEPATCH
120 
121 check_result "% insmod test_modules/$MOD_LIVEPATCH.ko replace=0
122 livepatch: enabling patch '$MOD_LIVEPATCH'
123 livepatch: '$MOD_LIVEPATCH': initializing patching transition
124 livepatch: '$MOD_LIVEPATCH': starting patching transition
125 livepatch: '$MOD_LIVEPATCH': completing patching transition
126 livepatch: '$MOD_LIVEPATCH': patching complete
127 % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
128 livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
129 livepatch: '$MOD_LIVEPATCH': starting unpatching transition
130 livepatch: '$MOD_LIVEPATCH': completing unpatching transition
131 livepatch: '$MOD_LIVEPATCH': unpatching complete
132 % rmmod $MOD_LIVEPATCH"
133 
134 exit 0

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php