^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) #!/bin/bash
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) # SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) # Copyright (C) 2019 Joe Lawrence <joe.lawrence@redhat.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) . $(dirname $0)/functions.sh
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) MOD_LIVEPATCH=test_klp_livepatch
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) setup_config
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) # - turn ftrace_enabled OFF and verify livepatches can't load
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) # - turn ftrace_enabled ON and verify livepatch can load
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) # - verify that ftrace_enabled can't be turned OFF while a livepatch is loaded
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) start_test "livepatch interaction with ftrace_enabled sysctl"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) set_ftrace_enabled 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) load_failing_mod $MOD_LIVEPATCH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) set_ftrace_enabled 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) load_lp $MOD_LIVEPATCH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) if [[ "$(cat /proc/cmdline)" != "$MOD_LIVEPATCH: this has been live patched" ]] ; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) echo -e "FAIL\n\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) die "livepatch kselftest(s) failed"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) set_ftrace_enabled 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) if [[ "$(cat /proc/cmdline)" != "$MOD_LIVEPATCH: this has been live patched" ]] ; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) echo -e "FAIL\n\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) die "livepatch kselftest(s) failed"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) disable_lp $MOD_LIVEPATCH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) unload_lp $MOD_LIVEPATCH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) check_result "livepatch: kernel.ftrace_enabled = 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) % modprobe $MOD_LIVEPATCH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) livepatch: enabling patch '$MOD_LIVEPATCH'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) livepatch: '$MOD_LIVEPATCH': initializing patching transition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) livepatch: failed to register ftrace handler for function 'cmdline_proc_show' (-16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) livepatch: failed to patch object 'vmlinux'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) livepatch: failed to enable patch '$MOD_LIVEPATCH'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) livepatch: '$MOD_LIVEPATCH': canceling patching transition, going to unpatch
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) livepatch: '$MOD_LIVEPATCH': completing unpatching transition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) livepatch: '$MOD_LIVEPATCH': unpatching complete
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) modprobe: ERROR: could not insert '$MOD_LIVEPATCH': Device or resource busy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) livepatch: kernel.ftrace_enabled = 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) % modprobe $MOD_LIVEPATCH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) livepatch: enabling patch '$MOD_LIVEPATCH'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) livepatch: '$MOD_LIVEPATCH': initializing patching transition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) livepatch: '$MOD_LIVEPATCH': starting patching transition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) livepatch: '$MOD_LIVEPATCH': completing patching transition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) livepatch: '$MOD_LIVEPATCH': patching complete
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) livepatch: sysctl: setting key \"kernel.ftrace_enabled\": Device or resource busy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) livepatch: '$MOD_LIVEPATCH': starting unpatching transition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) livepatch: '$MOD_LIVEPATCH': completing unpatching transition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) livepatch: '$MOD_LIVEPATCH': unpatching complete
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) % rmmod $MOD_LIVEPATCH"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) exit 0