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
142eeb0d45SJoe Lawrence# Load and remove a module that modifies the system state
152eeb0d45SJoe Lawrence
162eeb0d45SJoe 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
442eeb0d45SJoe Lawrence# Take over system state change by a cumulative patch
45ecd25094SPetr Mladek
462eeb0d45SJoe 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
872eeb0d45SJoe Lawrence# Take over system state change by a cumulative patch
88ecd25094SPetr Mladek
892eeb0d45SJoe 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
1432eeb0d45SJoe Lawrence# Failure caused by incompatible cumulative livepatches
144ecd25094SPetr Mladek
1452eeb0d45SJoe 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