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