Lines Matching +full:on +full:- +full:die
2 # SPDX-License-Identifier: GPL-2.0
10 # Kselftest framework requirement - SKIP code is 4
13 # log(msg) - write message to kernel log
14 # msg - insightful words
19 # skip(msg) - testing can't proceed
20 # msg - explanation
29 uid=$(id -u)
30 if [ $uid -ne 0 ]; then
36 # die(msg) - game over, man
37 # msg - dying words
38 function die() { function
46 SAVED_DMESG=$(mktemp --tmpdir -t klp-dmesg-XXXXXX)
52 rm -f "$SAVED_DMESG"
57 awk -F'[: ]' '{print "file " $1 " line " $2 " " $4}')
58 FTRACE_ENABLED=$(sysctl --values kernel.ftrace_enabled)
62 if [[ -n "$DYNAMIC_DEBUG" ]]; then
63 echo -n "$DYNAMIC_DEBUG" > /sys/kernel/debug/dynamic_debug/control
65 if [[ -n "$FTRACE_ENABLED" ]]; then
71 cat <<-EOF > /sys/kernel/debug/dynamic_debug/control
73 func klp_try_switch_task -p
78 result=$(sysctl -q kernel.ftrace_enabled="$1" 2>&1 && \
88 # setup_config - save the current config and set a script exit trap that
90 # for verbose livepatching output and turn on
100 # loop_until(cmd) - loop a command until it is successful or $MAX_RETRIES,
102 # cmd - command and its arguments to run
108 [[ $((i++)) -eq $MAX_RETRIES ]] && return 1
116 modprobe --dry-run "$mod" &>/dev/null
136 die "$ret"
140 loop_until '[[ -e "/sys/module/$mod" ]]' ||
141 die "failed to load module $mod"
145 # load_mod(modname, params) - load a kernel module
146 # modname - module name to load
147 # params - module parameters to pass to modprobe
152 skip "unable to load module ${mod}, verify CONFIG_TEST_LIVEPATCH=m and run self-tests as root"
155 die "use load_lp() to load the livepatch module $mod"
160 # load_lp_nowait(modname, params) - load a kernel module with a livepatch
161 # but do not wait on until the transition finishes
162 # modname - module name to load
163 # params - module parameters to pass to modprobe
168 skip "unable to load module ${mod}, verify CONFIG_TEST_LIVEPATCH=m and run self-tests as root"
171 die "module $mod is not a livepatch"
176 loop_until '[[ -e "/sys/kernel/livepatch/$mod" ]]' ||
177 die "failed to load module $mod (sysfs)"
180 # load_lp(modname, params) - load a kernel module with a livepatch
181 # modname - module name to load
182 # params - module parameters to pass to modprobe
189 loop_until 'grep -q '^0$' /sys/kernel/livepatch/$mod/transition' ||
190 die "failed to complete transition"
193 # load_failing_mod(modname, params) - load a kernel module, expect to fail
194 # modname - module name to load
195 # params - module parameters to pass to modprobe
203 die "$mod unexpectedly loaded"
208 # unload_mod(modname) - unload a kernel module
209 # modname - module name to unload
215 die "failed to unload module $mod (refcnt)"
220 die "$ret"
224 loop_until '[[ ! -e "/sys/module/$mod" ]]' ||
225 die "failed to unload module $mod (/sys/module)"
228 # unload_lp(modname) - unload a kernel module with a livepatch
229 # modname - module name to unload
234 # disable_lp(modname) - disable a livepatch
235 # modname - module name to unload
244 loop_until '[[ ! -e "/sys/kernel/livepatch/$mod" ]]' ||
245 die "failed to disable livepatch $mod"
249 # modname - module name to set
250 # pre_patch_ret - new pre_patch_ret value
260 die "failed to set pre_patch_ret parameter for $mod module"
267 echo -n "TEST: $test ... "
271 # check_result() - verify dmesg output
272 # TODO - better filter, out of order msgs, etc?
279 # post-comparison sed filter.
281 result=$(dmesg | comm --nocheck-order -13 "$SAVED_DMESG" - | \
282 grep -e 'livepatch:' -e 'test_klp' | \
283 grep -v '\(tainting\|taints\) kernel' | \
284 sed 's/^\[[ 0-9.]*\] //')
289 …echo -e "not ok\n\n$(diff -upr --label expected --label result <(echo "$expect") <(echo "$result")…
290 die "livepatch kselftest(s) failed"