0001
0002
0003
0004
0005 . $(dirname $0)/functions.sh
0006
0007 MOD_LIVEPATCH=test_klp_livepatch
0008 MOD_REPLACE=test_klp_atomic_replace
0009
0010 setup_config
0011
0012
0013
0014
0015
0016
0017 start_test "basic function patching"
0018
0019 load_lp $MOD_LIVEPATCH
0020
0021 if [[ "$(cat /proc/cmdline)" != "$MOD_LIVEPATCH: this has been live patched" ]] ; then
0022 echo -e "FAIL\n\n"
0023 die "livepatch kselftest(s) failed"
0024 fi
0025
0026 disable_lp $MOD_LIVEPATCH
0027 unload_lp $MOD_LIVEPATCH
0028
0029 if [[ "$(cat /proc/cmdline)" == "$MOD_LIVEPATCH: this has been live patched" ]] ; then
0030 echo -e "FAIL\n\n"
0031 die "livepatch kselftest(s) failed"
0032 fi
0033
0034 check_result "% modprobe $MOD_LIVEPATCH
0035 livepatch: enabling patch '$MOD_LIVEPATCH'
0036 livepatch: '$MOD_LIVEPATCH': initializing patching transition
0037 livepatch: '$MOD_LIVEPATCH': starting patching transition
0038 livepatch: '$MOD_LIVEPATCH': completing patching transition
0039 livepatch: '$MOD_LIVEPATCH': patching complete
0040 % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
0041 livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
0042 livepatch: '$MOD_LIVEPATCH': starting unpatching transition
0043 livepatch: '$MOD_LIVEPATCH': completing unpatching transition
0044 livepatch: '$MOD_LIVEPATCH': unpatching complete
0045 % rmmod $MOD_LIVEPATCH"
0046
0047
0048
0049
0050
0051
0052
0053
0054 start_test "multiple livepatches"
0055
0056 load_lp $MOD_LIVEPATCH
0057
0058 grep 'live patched' /proc/cmdline > /dev/kmsg
0059 grep 'live patched' /proc/meminfo > /dev/kmsg
0060
0061 load_lp $MOD_REPLACE replace=0
0062
0063 grep 'live patched' /proc/cmdline > /dev/kmsg
0064 grep 'live patched' /proc/meminfo > /dev/kmsg
0065
0066 disable_lp $MOD_REPLACE
0067 unload_lp $MOD_REPLACE
0068
0069 grep 'live patched' /proc/cmdline > /dev/kmsg
0070 grep 'live patched' /proc/meminfo > /dev/kmsg
0071
0072 disable_lp $MOD_LIVEPATCH
0073 unload_lp $MOD_LIVEPATCH
0074
0075 grep 'live patched' /proc/cmdline > /dev/kmsg
0076 grep 'live patched' /proc/meminfo > /dev/kmsg
0077
0078 check_result "% modprobe $MOD_LIVEPATCH
0079 livepatch: enabling patch '$MOD_LIVEPATCH'
0080 livepatch: '$MOD_LIVEPATCH': initializing patching transition
0081 livepatch: '$MOD_LIVEPATCH': starting patching transition
0082 livepatch: '$MOD_LIVEPATCH': completing patching transition
0083 livepatch: '$MOD_LIVEPATCH': patching complete
0084 $MOD_LIVEPATCH: this has been live patched
0085 % modprobe $MOD_REPLACE replace=0
0086 livepatch: enabling patch '$MOD_REPLACE'
0087 livepatch: '$MOD_REPLACE': initializing patching transition
0088 livepatch: '$MOD_REPLACE': starting patching transition
0089 livepatch: '$MOD_REPLACE': completing patching transition
0090 livepatch: '$MOD_REPLACE': patching complete
0091 $MOD_LIVEPATCH: this has been live patched
0092 $MOD_REPLACE: this has been live patched
0093 % echo 0 > /sys/kernel/livepatch/$MOD_REPLACE/enabled
0094 livepatch: '$MOD_REPLACE': initializing unpatching transition
0095 livepatch: '$MOD_REPLACE': starting unpatching transition
0096 livepatch: '$MOD_REPLACE': completing unpatching transition
0097 livepatch: '$MOD_REPLACE': unpatching complete
0098 % rmmod $MOD_REPLACE
0099 $MOD_LIVEPATCH: this has been live patched
0100 % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
0101 livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
0102 livepatch: '$MOD_LIVEPATCH': starting unpatching transition
0103 livepatch: '$MOD_LIVEPATCH': completing unpatching transition
0104 livepatch: '$MOD_LIVEPATCH': unpatching complete
0105 % rmmod $MOD_LIVEPATCH"
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115 start_test "atomic replace livepatch"
0116
0117 load_lp $MOD_LIVEPATCH
0118
0119 grep 'live patched' /proc/cmdline > /dev/kmsg
0120 grep 'live patched' /proc/meminfo > /dev/kmsg
0121
0122 load_lp $MOD_REPLACE replace=1
0123
0124 grep 'live patched' /proc/cmdline > /dev/kmsg
0125 grep 'live patched' /proc/meminfo > /dev/kmsg
0126
0127 unload_lp $MOD_LIVEPATCH
0128
0129 grep 'live patched' /proc/cmdline > /dev/kmsg
0130 grep 'live patched' /proc/meminfo > /dev/kmsg
0131
0132 disable_lp $MOD_REPLACE
0133 unload_lp $MOD_REPLACE
0134
0135 grep 'live patched' /proc/cmdline > /dev/kmsg
0136 grep 'live patched' /proc/meminfo > /dev/kmsg
0137
0138 check_result "% modprobe $MOD_LIVEPATCH
0139 livepatch: enabling patch '$MOD_LIVEPATCH'
0140 livepatch: '$MOD_LIVEPATCH': initializing patching transition
0141 livepatch: '$MOD_LIVEPATCH': starting patching transition
0142 livepatch: '$MOD_LIVEPATCH': completing patching transition
0143 livepatch: '$MOD_LIVEPATCH': patching complete
0144 $MOD_LIVEPATCH: this has been live patched
0145 % modprobe $MOD_REPLACE replace=1
0146 livepatch: enabling patch '$MOD_REPLACE'
0147 livepatch: '$MOD_REPLACE': initializing patching transition
0148 livepatch: '$MOD_REPLACE': starting patching transition
0149 livepatch: '$MOD_REPLACE': completing patching transition
0150 livepatch: '$MOD_REPLACE': patching complete
0151 $MOD_REPLACE: this has been live patched
0152 % rmmod $MOD_LIVEPATCH
0153 $MOD_REPLACE: this has been live patched
0154 % echo 0 > /sys/kernel/livepatch/$MOD_REPLACE/enabled
0155 livepatch: '$MOD_REPLACE': initializing unpatching transition
0156 livepatch: '$MOD_REPLACE': starting unpatching transition
0157 livepatch: '$MOD_REPLACE': completing unpatching transition
0158 livepatch: '$MOD_REPLACE': unpatching complete
0159 % rmmod $MOD_REPLACE"
0160
0161
0162 exit 0