cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

test-livepatch.sh (5626B)


      1#!/bin/bash
      2# SPDX-License-Identifier: GPL-2.0
      3# Copyright (C) 2018 Joe Lawrence <joe.lawrence@redhat.com>
      4
      5. $(dirname $0)/functions.sh
      6
      7MOD_LIVEPATCH=test_klp_livepatch
      8MOD_REPLACE=test_klp_atomic_replace
      9
     10setup_config
     11
     12
     13# - load a livepatch that modifies the output from /proc/cmdline and
     14#   verify correct behavior
     15# - unload the livepatch and make sure the patch was removed
     16
     17start_test "basic function patching"
     18
     19load_lp $MOD_LIVEPATCH
     20
     21if [[ "$(cat /proc/cmdline)" != "$MOD_LIVEPATCH: this has been live patched" ]] ; then
     22	echo -e "FAIL\n\n"
     23	die "livepatch kselftest(s) failed"
     24fi
     25
     26disable_lp $MOD_LIVEPATCH
     27unload_lp $MOD_LIVEPATCH
     28
     29if [[ "$(cat /proc/cmdline)" == "$MOD_LIVEPATCH: this has been live patched" ]] ; then
     30	echo -e "FAIL\n\n"
     31	die "livepatch kselftest(s) failed"
     32fi
     33
     34check_result "% modprobe $MOD_LIVEPATCH
     35livepatch: enabling patch '$MOD_LIVEPATCH'
     36livepatch: '$MOD_LIVEPATCH': initializing patching transition
     37livepatch: '$MOD_LIVEPATCH': starting patching transition
     38livepatch: '$MOD_LIVEPATCH': completing patching transition
     39livepatch: '$MOD_LIVEPATCH': patching complete
     40% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
     41livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
     42livepatch: '$MOD_LIVEPATCH': starting unpatching transition
     43livepatch: '$MOD_LIVEPATCH': completing unpatching transition
     44livepatch: '$MOD_LIVEPATCH': unpatching complete
     45% rmmod $MOD_LIVEPATCH"
     46
     47
     48# - load a livepatch that modifies the output from /proc/cmdline and
     49#   verify correct behavior
     50# - load another livepatch and verify that both livepatches are active
     51# - unload the second livepatch and verify that the first is still active
     52# - unload the first livepatch and verify none are active
     53
     54start_test "multiple livepatches"
     55
     56load_lp $MOD_LIVEPATCH
     57
     58grep 'live patched' /proc/cmdline > /dev/kmsg
     59grep 'live patched' /proc/meminfo > /dev/kmsg
     60
     61load_lp $MOD_REPLACE replace=0
     62
     63grep 'live patched' /proc/cmdline > /dev/kmsg
     64grep 'live patched' /proc/meminfo > /dev/kmsg
     65
     66disable_lp $MOD_REPLACE
     67unload_lp $MOD_REPLACE
     68
     69grep 'live patched' /proc/cmdline > /dev/kmsg
     70grep 'live patched' /proc/meminfo > /dev/kmsg
     71
     72disable_lp $MOD_LIVEPATCH
     73unload_lp $MOD_LIVEPATCH
     74
     75grep 'live patched' /proc/cmdline > /dev/kmsg
     76grep 'live patched' /proc/meminfo > /dev/kmsg
     77
     78check_result "% modprobe $MOD_LIVEPATCH
     79livepatch: enabling patch '$MOD_LIVEPATCH'
     80livepatch: '$MOD_LIVEPATCH': initializing patching transition
     81livepatch: '$MOD_LIVEPATCH': starting patching transition
     82livepatch: '$MOD_LIVEPATCH': completing patching transition
     83livepatch: '$MOD_LIVEPATCH': patching complete
     84$MOD_LIVEPATCH: this has been live patched
     85% modprobe $MOD_REPLACE replace=0
     86livepatch: enabling patch '$MOD_REPLACE'
     87livepatch: '$MOD_REPLACE': initializing patching transition
     88livepatch: '$MOD_REPLACE': starting patching transition
     89livepatch: '$MOD_REPLACE': completing patching transition
     90livepatch: '$MOD_REPLACE': patching complete
     91$MOD_LIVEPATCH: this has been live patched
     92$MOD_REPLACE: this has been live patched
     93% echo 0 > /sys/kernel/livepatch/$MOD_REPLACE/enabled
     94livepatch: '$MOD_REPLACE': initializing unpatching transition
     95livepatch: '$MOD_REPLACE': starting unpatching transition
     96livepatch: '$MOD_REPLACE': completing unpatching transition
     97livepatch: '$MOD_REPLACE': unpatching complete
     98% rmmod $MOD_REPLACE
     99$MOD_LIVEPATCH: this has been live patched
    100% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
    101livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
    102livepatch: '$MOD_LIVEPATCH': starting unpatching transition
    103livepatch: '$MOD_LIVEPATCH': completing unpatching transition
    104livepatch: '$MOD_LIVEPATCH': unpatching complete
    105% rmmod $MOD_LIVEPATCH"
    106
    107
    108# - load a livepatch that modifies the output from /proc/cmdline and
    109#   verify correct behavior
    110# - load an atomic replace livepatch and verify that only the second is active
    111# - remove the first livepatch and verify that the atomic replace livepatch
    112#   is still active
    113# - remove the atomic replace livepatch and verify that none are active
    114
    115start_test "atomic replace livepatch"
    116
    117load_lp $MOD_LIVEPATCH
    118
    119grep 'live patched' /proc/cmdline > /dev/kmsg
    120grep 'live patched' /proc/meminfo > /dev/kmsg
    121
    122load_lp $MOD_REPLACE replace=1
    123
    124grep 'live patched' /proc/cmdline > /dev/kmsg
    125grep 'live patched' /proc/meminfo > /dev/kmsg
    126
    127unload_lp $MOD_LIVEPATCH
    128
    129grep 'live patched' /proc/cmdline > /dev/kmsg
    130grep 'live patched' /proc/meminfo > /dev/kmsg
    131
    132disable_lp $MOD_REPLACE
    133unload_lp $MOD_REPLACE
    134
    135grep 'live patched' /proc/cmdline > /dev/kmsg
    136grep 'live patched' /proc/meminfo > /dev/kmsg
    137
    138check_result "% modprobe $MOD_LIVEPATCH
    139livepatch: enabling patch '$MOD_LIVEPATCH'
    140livepatch: '$MOD_LIVEPATCH': initializing patching transition
    141livepatch: '$MOD_LIVEPATCH': starting patching transition
    142livepatch: '$MOD_LIVEPATCH': completing patching transition
    143livepatch: '$MOD_LIVEPATCH': patching complete
    144$MOD_LIVEPATCH: this has been live patched
    145% modprobe $MOD_REPLACE replace=1
    146livepatch: enabling patch '$MOD_REPLACE'
    147livepatch: '$MOD_REPLACE': initializing patching transition
    148livepatch: '$MOD_REPLACE': starting patching transition
    149livepatch: '$MOD_REPLACE': completing patching transition
    150livepatch: '$MOD_REPLACE': patching complete
    151$MOD_REPLACE: this has been live patched
    152% rmmod $MOD_LIVEPATCH
    153$MOD_REPLACE: this has been live patched
    154% echo 0 > /sys/kernel/livepatch/$MOD_REPLACE/enabled
    155livepatch: '$MOD_REPLACE': initializing unpatching transition
    156livepatch: '$MOD_REPLACE': starting unpatching transition
    157livepatch: '$MOD_REPLACE': completing unpatching transition
    158livepatch: '$MOD_REPLACE': unpatching complete
    159% rmmod $MOD_REPLACE"
    160
    161
    162exit 0