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-state.sh (7560B)


      1#!/bin/bash
      2# SPDX-License-Identifier: GPL-2.0
      3# Copyright (C) 2019 SUSE
      4
      5. $(dirname $0)/functions.sh
      6
      7MOD_LIVEPATCH=test_klp_state
      8MOD_LIVEPATCH2=test_klp_state2
      9MOD_LIVEPATCH3=test_klp_state3
     10
     11setup_config
     12
     13
     14# Load and remove a module that modifies the system state
     15
     16start_test "system state modification"
     17
     18load_lp $MOD_LIVEPATCH
     19disable_lp $MOD_LIVEPATCH
     20unload_lp $MOD_LIVEPATCH
     21
     22check_result "% modprobe $MOD_LIVEPATCH
     23livepatch: enabling patch '$MOD_LIVEPATCH'
     24livepatch: '$MOD_LIVEPATCH': initializing patching transition
     25$MOD_LIVEPATCH: pre_patch_callback: vmlinux
     26$MOD_LIVEPATCH: allocate_loglevel_state: allocating space to store console_loglevel
     27livepatch: '$MOD_LIVEPATCH': starting patching transition
     28livepatch: '$MOD_LIVEPATCH': completing patching transition
     29$MOD_LIVEPATCH: post_patch_callback: vmlinux
     30$MOD_LIVEPATCH: fix_console_loglevel: fixing console_loglevel
     31livepatch: '$MOD_LIVEPATCH': patching complete
     32% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
     33livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
     34$MOD_LIVEPATCH: pre_unpatch_callback: vmlinux
     35$MOD_LIVEPATCH: restore_console_loglevel: restoring console_loglevel
     36livepatch: '$MOD_LIVEPATCH': starting unpatching transition
     37livepatch: '$MOD_LIVEPATCH': completing unpatching transition
     38$MOD_LIVEPATCH: post_unpatch_callback: vmlinux
     39$MOD_LIVEPATCH: free_loglevel_state: freeing space for the stored console_loglevel
     40livepatch: '$MOD_LIVEPATCH': unpatching complete
     41% rmmod $MOD_LIVEPATCH"
     42
     43
     44# Take over system state change by a cumulative patch
     45
     46start_test "taking over system state modification"
     47
     48load_lp $MOD_LIVEPATCH
     49load_lp $MOD_LIVEPATCH2
     50unload_lp $MOD_LIVEPATCH
     51disable_lp $MOD_LIVEPATCH2
     52unload_lp $MOD_LIVEPATCH2
     53
     54check_result "% modprobe $MOD_LIVEPATCH
     55livepatch: enabling patch '$MOD_LIVEPATCH'
     56livepatch: '$MOD_LIVEPATCH': initializing patching transition
     57$MOD_LIVEPATCH: pre_patch_callback: vmlinux
     58$MOD_LIVEPATCH: allocate_loglevel_state: allocating space to store console_loglevel
     59livepatch: '$MOD_LIVEPATCH': starting patching transition
     60livepatch: '$MOD_LIVEPATCH': completing patching transition
     61$MOD_LIVEPATCH: post_patch_callback: vmlinux
     62$MOD_LIVEPATCH: fix_console_loglevel: fixing console_loglevel
     63livepatch: '$MOD_LIVEPATCH': patching complete
     64% modprobe $MOD_LIVEPATCH2
     65livepatch: enabling patch '$MOD_LIVEPATCH2'
     66livepatch: '$MOD_LIVEPATCH2': initializing patching transition
     67$MOD_LIVEPATCH2: pre_patch_callback: vmlinux
     68$MOD_LIVEPATCH2: allocate_loglevel_state: space to store console_loglevel already allocated
     69livepatch: '$MOD_LIVEPATCH2': starting patching transition
     70livepatch: '$MOD_LIVEPATCH2': completing patching transition
     71$MOD_LIVEPATCH2: post_patch_callback: vmlinux
     72$MOD_LIVEPATCH2: fix_console_loglevel: taking over the console_loglevel change
     73livepatch: '$MOD_LIVEPATCH2': patching complete
     74% rmmod $MOD_LIVEPATCH
     75% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH2/enabled
     76livepatch: '$MOD_LIVEPATCH2': initializing unpatching transition
     77$MOD_LIVEPATCH2: pre_unpatch_callback: vmlinux
     78$MOD_LIVEPATCH2: restore_console_loglevel: restoring console_loglevel
     79livepatch: '$MOD_LIVEPATCH2': starting unpatching transition
     80livepatch: '$MOD_LIVEPATCH2': completing unpatching transition
     81$MOD_LIVEPATCH2: post_unpatch_callback: vmlinux
     82$MOD_LIVEPATCH2: free_loglevel_state: freeing space for the stored console_loglevel
     83livepatch: '$MOD_LIVEPATCH2': unpatching complete
     84% rmmod $MOD_LIVEPATCH2"
     85
     86
     87# Take over system state change by a cumulative patch
     88
     89start_test "compatible cumulative livepatches"
     90
     91load_lp $MOD_LIVEPATCH2
     92load_lp $MOD_LIVEPATCH3
     93unload_lp $MOD_LIVEPATCH2
     94load_lp $MOD_LIVEPATCH2
     95disable_lp $MOD_LIVEPATCH2
     96unload_lp $MOD_LIVEPATCH2
     97unload_lp $MOD_LIVEPATCH3
     98
     99check_result "% modprobe $MOD_LIVEPATCH2
    100livepatch: enabling patch '$MOD_LIVEPATCH2'
    101livepatch: '$MOD_LIVEPATCH2': initializing patching transition
    102$MOD_LIVEPATCH2: pre_patch_callback: vmlinux
    103$MOD_LIVEPATCH2: allocate_loglevel_state: allocating space to store console_loglevel
    104livepatch: '$MOD_LIVEPATCH2': starting patching transition
    105livepatch: '$MOD_LIVEPATCH2': completing patching transition
    106$MOD_LIVEPATCH2: post_patch_callback: vmlinux
    107$MOD_LIVEPATCH2: fix_console_loglevel: fixing console_loglevel
    108livepatch: '$MOD_LIVEPATCH2': patching complete
    109% modprobe $MOD_LIVEPATCH3
    110livepatch: enabling patch '$MOD_LIVEPATCH3'
    111livepatch: '$MOD_LIVEPATCH3': initializing patching transition
    112$MOD_LIVEPATCH3: pre_patch_callback: vmlinux
    113$MOD_LIVEPATCH3: allocate_loglevel_state: space to store console_loglevel already allocated
    114livepatch: '$MOD_LIVEPATCH3': starting patching transition
    115livepatch: '$MOD_LIVEPATCH3': completing patching transition
    116$MOD_LIVEPATCH3: post_patch_callback: vmlinux
    117$MOD_LIVEPATCH3: fix_console_loglevel: taking over the console_loglevel change
    118livepatch: '$MOD_LIVEPATCH3': patching complete
    119% rmmod $MOD_LIVEPATCH2
    120% modprobe $MOD_LIVEPATCH2
    121livepatch: enabling patch '$MOD_LIVEPATCH2'
    122livepatch: '$MOD_LIVEPATCH2': initializing patching transition
    123$MOD_LIVEPATCH2: pre_patch_callback: vmlinux
    124$MOD_LIVEPATCH2: allocate_loglevel_state: space to store console_loglevel already allocated
    125livepatch: '$MOD_LIVEPATCH2': starting patching transition
    126livepatch: '$MOD_LIVEPATCH2': completing patching transition
    127$MOD_LIVEPATCH2: post_patch_callback: vmlinux
    128$MOD_LIVEPATCH2: fix_console_loglevel: taking over the console_loglevel change
    129livepatch: '$MOD_LIVEPATCH2': patching complete
    130% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH2/enabled
    131livepatch: '$MOD_LIVEPATCH2': initializing unpatching transition
    132$MOD_LIVEPATCH2: pre_unpatch_callback: vmlinux
    133$MOD_LIVEPATCH2: restore_console_loglevel: restoring console_loglevel
    134livepatch: '$MOD_LIVEPATCH2': starting unpatching transition
    135livepatch: '$MOD_LIVEPATCH2': completing unpatching transition
    136$MOD_LIVEPATCH2: post_unpatch_callback: vmlinux
    137$MOD_LIVEPATCH2: free_loglevel_state: freeing space for the stored console_loglevel
    138livepatch: '$MOD_LIVEPATCH2': unpatching complete
    139% rmmod $MOD_LIVEPATCH2
    140% rmmod $MOD_LIVEPATCH3"
    141
    142
    143# Failure caused by incompatible cumulative livepatches
    144
    145start_test "incompatible cumulative livepatches"
    146
    147load_lp $MOD_LIVEPATCH2
    148load_failing_mod $MOD_LIVEPATCH
    149disable_lp $MOD_LIVEPATCH2
    150unload_lp $MOD_LIVEPATCH2
    151
    152check_result "% modprobe $MOD_LIVEPATCH2
    153livepatch: enabling patch '$MOD_LIVEPATCH2'
    154livepatch: '$MOD_LIVEPATCH2': initializing patching transition
    155$MOD_LIVEPATCH2: pre_patch_callback: vmlinux
    156$MOD_LIVEPATCH2: allocate_loglevel_state: allocating space to store console_loglevel
    157livepatch: '$MOD_LIVEPATCH2': starting patching transition
    158livepatch: '$MOD_LIVEPATCH2': completing patching transition
    159$MOD_LIVEPATCH2: post_patch_callback: vmlinux
    160$MOD_LIVEPATCH2: fix_console_loglevel: fixing console_loglevel
    161livepatch: '$MOD_LIVEPATCH2': patching complete
    162% modprobe $MOD_LIVEPATCH
    163livepatch: Livepatch patch ($MOD_LIVEPATCH) is not compatible with the already installed livepatches.
    164modprobe: ERROR: could not insert '$MOD_LIVEPATCH': Invalid argument
    165% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH2/enabled
    166livepatch: '$MOD_LIVEPATCH2': initializing unpatching transition
    167$MOD_LIVEPATCH2: pre_unpatch_callback: vmlinux
    168$MOD_LIVEPATCH2: restore_console_loglevel: restoring console_loglevel
    169livepatch: '$MOD_LIVEPATCH2': starting unpatching transition
    170livepatch: '$MOD_LIVEPATCH2': completing unpatching transition
    171$MOD_LIVEPATCH2: post_unpatch_callback: vmlinux
    172$MOD_LIVEPATCH2: free_loglevel_state: freeing space for the stored console_loglevel
    173livepatch: '$MOD_LIVEPATCH2': unpatching complete
    174% rmmod $MOD_LIVEPATCH2"
    175
    176exit 0