File Index
Files and directories
Sign in
FILE

test-sysfs.sh

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/livepatch/test-sysfs.sh BASH
  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
  7MOD_LIVEPATCH=test_klp_livepatch
  8MOD_LIVEPATCH2=test_klp_callbacks_demo
  9MOD_LIVEPATCH3=test_klp_syscall
 10
 11setup_config
 12
 13# - load a livepatch and verifies the sysfs entries work as expected
 14
 15start_test "sysfs test"
 16
 17load_lp $MOD_LIVEPATCH
 18
 19check_sysfs_rights "$MOD_LIVEPATCH" "" "drwxr-xr-x"
 20check_sysfs_rights "$MOD_LIVEPATCH" "enabled" "-rw-r--r--"
 21check_sysfs_value  "$MOD_LIVEPATCH" "enabled" "1"
 22check_sysfs_rights "$MOD_LIVEPATCH" "force" "--w-------"
 23check_sysfs_rights "$MOD_LIVEPATCH" "replace" "-r--r--r--"
 24check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--"
 25check_sysfs_value  "$MOD_LIVEPATCH" "stack_order" "1"
 26check_sysfs_rights "$MOD_LIVEPATCH" "transition" "-r--r--r--"
 27check_sysfs_value  "$MOD_LIVEPATCH" "transition" "0"
 28check_sysfs_rights "$MOD_LIVEPATCH" "vmlinux/patched" "-r--r--r--"
 29check_sysfs_value  "$MOD_LIVEPATCH" "vmlinux/patched" "1"
 30
 31disable_lp $MOD_LIVEPATCH
 32
 33unload_lp $MOD_LIVEPATCH
 34
 35check_result "% insmod test_modules/$MOD_LIVEPATCH.ko
 36livepatch: enabling patch '$MOD_LIVEPATCH'
 37livepatch: '$MOD_LIVEPATCH': initializing patching transition
 38livepatch: '$MOD_LIVEPATCH': starting patching transition
 39livepatch: '$MOD_LIVEPATCH': completing patching transition
 40livepatch: '$MOD_LIVEPATCH': patching complete
 41% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled
 42livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
 43livepatch: '$MOD_LIVEPATCH': starting unpatching transition
 44livepatch: '$MOD_LIVEPATCH': completing unpatching transition
 45livepatch: '$MOD_LIVEPATCH': unpatching complete
 46% rmmod $MOD_LIVEPATCH"
 47
 48start_test "sysfs test object/patched"
 49
 50MOD_LIVEPATCH=test_klp_callbacks_demo
 51MOD_TARGET=test_klp_callbacks_mod
 52load_lp $MOD_LIVEPATCH
 53
 54# check the "patch" file changes as target module loads/unloads
 55check_sysfs_value  "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0"
 56load_mod $MOD_TARGET
 57check_sysfs_value  "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "1"
 58unload_mod $MOD_TARGET
 59check_sysfs_value  "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0"
 60
 61disable_lp $MOD_LIVEPATCH
 62unload_lp $MOD_LIVEPATCH
 63
 64check_result "% insmod test_modules/test_klp_callbacks_demo.ko
 65livepatch: enabling patch 'test_klp_callbacks_demo'
 66livepatch: 'test_klp_callbacks_demo': initializing patching transition
 67test_klp_callbacks_demo: pre_patch_callback: vmlinux
 68livepatch: 'test_klp_callbacks_demo': starting patching transition
 69livepatch: 'test_klp_callbacks_demo': completing patching transition
 70test_klp_callbacks_demo: post_patch_callback: vmlinux
 71livepatch: 'test_klp_callbacks_demo': patching complete
 72% insmod test_modules/test_klp_callbacks_mod.ko
 73livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod'
 74test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init
 75test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init
 76test_klp_callbacks_mod: test_klp_callbacks_mod_init
 77% rmmod test_klp_callbacks_mod
 78test_klp_callbacks_mod: test_klp_callbacks_mod_exit
 79test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away
 80livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod'
 81test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away
 82% echo 0 > $SYSFS_KLP_DIR/test_klp_callbacks_demo/enabled
 83livepatch: 'test_klp_callbacks_demo': initializing unpatching transition
 84test_klp_callbacks_demo: pre_unpatch_callback: vmlinux
 85livepatch: 'test_klp_callbacks_demo': starting unpatching transition
 86livepatch: 'test_klp_callbacks_demo': completing unpatching transition
 87test_klp_callbacks_demo: post_unpatch_callback: vmlinux
 88livepatch: 'test_klp_callbacks_demo': unpatching complete
 89% rmmod test_klp_callbacks_demo"
 90
 91start_test "sysfs test replace enabled"
 92
 93MOD_LIVEPATCH=test_klp_atomic_replace
 94load_lp $MOD_LIVEPATCH replace=1
 95
 96check_sysfs_rights "$MOD_LIVEPATCH" "replace" "-r--r--r--"
 97check_sysfs_value  "$MOD_LIVEPATCH" "replace" "1"
 98
 99disable_lp $MOD_LIVEPATCH
100unload_lp $MOD_LIVEPATCH
101
102check_result "% insmod test_modules/$MOD_LIVEPATCH.ko replace=1
103livepatch: enabling patch '$MOD_LIVEPATCH'
104livepatch: '$MOD_LIVEPATCH': initializing patching transition
105livepatch: '$MOD_LIVEPATCH': starting patching transition
106livepatch: '$MOD_LIVEPATCH': completing patching transition
107livepatch: '$MOD_LIVEPATCH': patching complete
108% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled
109livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
110livepatch: '$MOD_LIVEPATCH': starting unpatching transition
111livepatch: '$MOD_LIVEPATCH': completing unpatching transition
112livepatch: '$MOD_LIVEPATCH': unpatching complete
113% rmmod $MOD_LIVEPATCH"
114
115start_test "sysfs test replace disabled"
116
117load_lp $MOD_LIVEPATCH replace=0
118
119check_sysfs_rights "$MOD_LIVEPATCH" "replace" "-r--r--r--"
120check_sysfs_value  "$MOD_LIVEPATCH" "replace" "0"
121
122disable_lp $MOD_LIVEPATCH
123unload_lp $MOD_LIVEPATCH
124
125check_result "% insmod test_modules/$MOD_LIVEPATCH.ko replace=0
126livepatch: enabling patch '$MOD_LIVEPATCH'
127livepatch: '$MOD_LIVEPATCH': initializing patching transition
128livepatch: '$MOD_LIVEPATCH': starting patching transition
129livepatch: '$MOD_LIVEPATCH': completing patching transition
130livepatch: '$MOD_LIVEPATCH': patching complete
131% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled
132livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
133livepatch: '$MOD_LIVEPATCH': starting unpatching transition
134livepatch: '$MOD_LIVEPATCH': completing unpatching transition
135livepatch: '$MOD_LIVEPATCH': unpatching complete
136% rmmod $MOD_LIVEPATCH"
137
138start_test "sysfs test stack_order value"
139
140load_lp $MOD_LIVEPATCH
141
142check_sysfs_value  "$MOD_LIVEPATCH" "stack_order" "1"
143
144load_lp $MOD_LIVEPATCH2
145
146check_sysfs_value  "$MOD_LIVEPATCH2" "stack_order" "2"
147
148load_lp $MOD_LIVEPATCH3
149
150check_sysfs_value  "$MOD_LIVEPATCH3" "stack_order" "3"
151
152disable_lp $MOD_LIVEPATCH2
153unload_lp $MOD_LIVEPATCH2
154
155check_sysfs_value  "$MOD_LIVEPATCH" "stack_order" "1"
156check_sysfs_value  "$MOD_LIVEPATCH3" "stack_order" "2"
157
158disable_lp $MOD_LIVEPATCH3
159unload_lp $MOD_LIVEPATCH3
160
161disable_lp $MOD_LIVEPATCH
162unload_lp $MOD_LIVEPATCH
163
164check_result "% insmod test_modules/$MOD_LIVEPATCH.ko
165livepatch: enabling patch '$MOD_LIVEPATCH'
166livepatch: '$MOD_LIVEPATCH': initializing patching transition
167livepatch: '$MOD_LIVEPATCH': starting patching transition
168livepatch: '$MOD_LIVEPATCH': completing patching transition
169livepatch: '$MOD_LIVEPATCH': patching complete
170% insmod test_modules/$MOD_LIVEPATCH2.ko
171livepatch: enabling patch '$MOD_LIVEPATCH2'
172livepatch: '$MOD_LIVEPATCH2': initializing patching transition
173$MOD_LIVEPATCH2: pre_patch_callback: vmlinux
174livepatch: '$MOD_LIVEPATCH2': starting patching transition
175livepatch: '$MOD_LIVEPATCH2': completing patching transition
176$MOD_LIVEPATCH2: post_patch_callback: vmlinux
177livepatch: '$MOD_LIVEPATCH2': patching complete
178% insmod test_modules/$MOD_LIVEPATCH3.ko
179livepatch: enabling patch '$MOD_LIVEPATCH3'
180livepatch: '$MOD_LIVEPATCH3': initializing patching transition
181livepatch: '$MOD_LIVEPATCH3': starting patching transition
182livepatch: '$MOD_LIVEPATCH3': completing patching transition
183livepatch: '$MOD_LIVEPATCH3': patching complete
184% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH2/enabled
185livepatch: '$MOD_LIVEPATCH2': initializing unpatching transition
186$MOD_LIVEPATCH2: pre_unpatch_callback: vmlinux
187livepatch: '$MOD_LIVEPATCH2': starting unpatching transition
188livepatch: '$MOD_LIVEPATCH2': completing unpatching transition
189$MOD_LIVEPATCH2: post_unpatch_callback: vmlinux
190livepatch: '$MOD_LIVEPATCH2': unpatching complete
191% rmmod $MOD_LIVEPATCH2
192% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH3/enabled
193livepatch: '$MOD_LIVEPATCH3': initializing unpatching transition
194livepatch: '$MOD_LIVEPATCH3': starting unpatching transition
195livepatch: '$MOD_LIVEPATCH3': completing unpatching transition
196livepatch: '$MOD_LIVEPATCH3': unpatching complete
197% rmmod $MOD_LIVEPATCH3
198% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled
199livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
200livepatch: '$MOD_LIVEPATCH': starting unpatching transition
201livepatch: '$MOD_LIVEPATCH': completing unpatching transition
202livepatch: '$MOD_LIVEPATCH': unpatching complete
203% rmmod $MOD_LIVEPATCH"
204
205exit 0
~/ Read-only file preview.