Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0
0003 # Copyright (C) 2019 Joe Lawrence <joe.lawrence@redhat.com>
0004 
0005 . $(dirname $0)/functions.sh
0006 
0007 MOD_LIVEPATCH=test_klp_livepatch
0008 
0009 setup_config
0010 
0011 
0012 # - turn ftrace_enabled OFF and verify livepatches can't load
0013 # - turn ftrace_enabled ON and verify livepatch can load
0014 # - verify that ftrace_enabled can't be turned OFF while a livepatch is loaded
0015 
0016 start_test "livepatch interaction with ftrace_enabled sysctl"
0017 
0018 set_ftrace_enabled 0
0019 load_failing_mod $MOD_LIVEPATCH
0020 
0021 set_ftrace_enabled 1
0022 load_lp $MOD_LIVEPATCH
0023 if [[ "$(cat /proc/cmdline)" != "$MOD_LIVEPATCH: this has been live patched" ]] ; then
0024         echo -e "FAIL\n\n"
0025         die "livepatch kselftest(s) failed"
0026 fi
0027 
0028 # Check that ftrace could not get disabled when a livepatch is enabled
0029 set_ftrace_enabled --fail 0
0030 if [[ "$(cat /proc/cmdline)" != "$MOD_LIVEPATCH: this has been live patched" ]] ; then
0031         echo -e "FAIL\n\n"
0032         die "livepatch kselftest(s) failed"
0033 fi
0034 disable_lp $MOD_LIVEPATCH
0035 unload_lp $MOD_LIVEPATCH
0036 
0037 check_result "livepatch: kernel.ftrace_enabled = 0
0038 % modprobe $MOD_LIVEPATCH
0039 livepatch: enabling patch '$MOD_LIVEPATCH'
0040 livepatch: '$MOD_LIVEPATCH': initializing patching transition
0041 livepatch: failed to register ftrace handler for function 'cmdline_proc_show' (-16)
0042 livepatch: failed to patch object 'vmlinux'
0043 livepatch: failed to enable patch '$MOD_LIVEPATCH'
0044 livepatch: '$MOD_LIVEPATCH': canceling patching transition, going to unpatch
0045 livepatch: '$MOD_LIVEPATCH': completing unpatching transition
0046 livepatch: '$MOD_LIVEPATCH': unpatching complete
0047 modprobe: ERROR: could not insert '$MOD_LIVEPATCH': Device or resource busy
0048 livepatch: kernel.ftrace_enabled = 1
0049 % modprobe $MOD_LIVEPATCH
0050 livepatch: enabling patch '$MOD_LIVEPATCH'
0051 livepatch: '$MOD_LIVEPATCH': initializing patching transition
0052 livepatch: '$MOD_LIVEPATCH': starting patching transition
0053 livepatch: '$MOD_LIVEPATCH': completing patching transition
0054 livepatch: '$MOD_LIVEPATCH': patching complete
0055 livepatch: sysctl: setting key \"kernel.ftrace_enabled\": Device or resource busy
0056 % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
0057 livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
0058 livepatch: '$MOD_LIVEPATCH': starting unpatching transition
0059 livepatch: '$MOD_LIVEPATCH': completing unpatching transition
0060 livepatch: '$MOD_LIVEPATCH': unpatching complete
0061 % rmmod $MOD_LIVEPATCH"
0062 
0063 
0064 exit 0