Skip to content

Commit 9ce455f

Browse files
committed
Merge: livepatch: selected fixes for rhel-9.7
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/6511 JIRA: https://issues.redhat.com/browse/RHEL-80215 A small series of fixes for the RHEL9.7 livepatch subsystem. Signed-off-by: Denis Aleksandrov <[email protected]> Approved-by: Ryan Sullivan <[email protected]> Approved-by: Joe Lawrence <[email protected]> Approved-by: CKI KWF Bot <[email protected]> Merged-by: Augusto Caringi <[email protected]>
2 parents 470bfbb + 9645e6e commit 9ce455f

File tree

12 files changed

+153
-44
lines changed

12 files changed

+153
-44
lines changed

Documentation/livepatch/livepatch.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ some limitations, see below.
5050
3. Consistency model
5151
====================
5252

53-
Functions are there for a reason. They take some input parameters, get or
53+
Functions are there for a reason. They take some input parameters, acquire or
5454
release locks, read, process, and even write some data in a defined way,
5555
have return values. In other words, each function has a defined semantic.
5656

lib/livepatch/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ obj-$(CONFIG_TEST_LIVEPATCH) += test_klp_atomic_replace.o \
77
test_klp_callbacks_demo2.o \
88
test_klp_callbacks_busy.o \
99
test_klp_callbacks_mod.o \
10+
test_klp_kprobe.o \
1011
test_klp_livepatch.o \
12+
test_klp_shadow_vars.o \
1113
test_klp_state.o \
1214
test_klp_state2.o \
1315
test_klp_state3.o \
14-
test_klp_shadow_vars.o \
1516
test_klp_syscall.o

lib/livepatch/test_klp_kprobe.c

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// SPDX-License-Identifier: GPL-2.0
2+
// Copyright (C) 2024 Marcos Paulo de Souza <[email protected]>
3+
// Copyright (C) 2024 Michael Vetter <[email protected]>
4+
5+
#include <linux/kernel.h>
6+
#include <linux/module.h>
7+
#include <linux/kprobes.h>
8+
9+
static bool has_post_handler = true;
10+
module_param(has_post_handler, bool, 0444);
11+
12+
static void __kprobes post_handler(struct kprobe *p, struct pt_regs *regs,
13+
unsigned long flags)
14+
{
15+
}
16+
17+
static struct kprobe kp = {
18+
.symbol_name = "cmdline_proc_show",
19+
};
20+
21+
static int __init kprobe_init(void)
22+
{
23+
if (has_post_handler)
24+
kp.post_handler = post_handler;
25+
26+
return register_kprobe(&kp);
27+
}
28+
29+
static void __exit kprobe_exit(void)
30+
{
31+
unregister_kprobe(&kp);
32+
}
33+
34+
module_init(kprobe_init)
35+
module_exit(kprobe_exit)
36+
MODULE_LICENSE("GPL");
37+
MODULE_AUTHOR("Michael Vetter <[email protected]>");
38+
MODULE_DESCRIPTION("Livepatch test: kprobe function");

tools/testing/selftests/livepatch/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ TEST_PROGS := \
99
test-state.sh \
1010
test-ftrace.sh \
1111
test-sysfs.sh \
12-
test-syscall.sh
12+
test-syscall.sh \
13+
test-kprobe.sh
1314

1415
TEST_FILES := settings
1516

tools/testing/selftests/livepatch/functions.sh

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66

77
MAX_RETRIES=600
88
RETRY_INTERVAL=".1" # seconds
9-
KLP_SYSFS_DIR="/sys/kernel/livepatch"
9+
SYSFS_KERNEL_DIR="/sys/kernel"
10+
SYSFS_KLP_DIR="$SYSFS_KERNEL_DIR/livepatch"
11+
SYSFS_DEBUG_DIR="$SYSFS_KERNEL_DIR/debug"
12+
SYSFS_KPROBES_DIR="$SYSFS_DEBUG_DIR/kprobes"
1013

1114
# Kselftest framework requirement - SKIP code is 4
1215
ksft_skip=4
@@ -43,22 +46,26 @@ function die() {
4346
}
4447

4548
function push_config() {
46-
DYNAMIC_DEBUG=$(grep '^kernel/livepatch' /sys/kernel/debug/dynamic_debug/control | \
49+
DYNAMIC_DEBUG=$(grep '^kernel/livepatch' "$SYSFS_DEBUG_DIR/dynamic_debug/control" | \
4750
awk -F'[: ]' '{print "file " $1 " line " $2 " " $4}')
4851
FTRACE_ENABLED=$(sysctl --values kernel.ftrace_enabled)
52+
KPROBE_ENABLED=$(cat "$SYSFS_KPROBES_DIR/enabled")
4953
}
5054

5155
function pop_config() {
5256
if [[ -n "$DYNAMIC_DEBUG" ]]; then
53-
echo -n "$DYNAMIC_DEBUG" > /sys/kernel/debug/dynamic_debug/control
57+
echo -n "$DYNAMIC_DEBUG" > "$SYSFS_DEBUG_DIR/dynamic_debug/control"
5458
fi
5559
if [[ -n "$FTRACE_ENABLED" ]]; then
5660
sysctl kernel.ftrace_enabled="$FTRACE_ENABLED" &> /dev/null
5761
fi
62+
if [[ -n "$KPROBE_ENABLED" ]]; then
63+
echo "$KPROBE_ENABLED" > "$SYSFS_KPROBES_DIR/enabled"
64+
fi
5865
}
5966

6067
function set_dynamic_debug() {
61-
cat <<-EOF > /sys/kernel/debug/dynamic_debug/control
68+
cat <<-EOF > "$SYSFS_DEBUG_DIR/dynamic_debug/control"
6269
file kernel/livepatch/* +p
6370
func klp_try_switch_task -p
6471
EOF
@@ -178,7 +185,7 @@ function load_lp_nowait() {
178185
__load_mod "$mod" "$@"
179186

180187
# Wait for livepatch in sysfs ...
181-
loop_until '[[ -e "/sys/kernel/livepatch/$mod" ]]' ||
188+
loop_until '[[ -e "$SYSFS_KLP_DIR/$mod" ]]' ||
182189
die "failed to load module $mod (sysfs)"
183190
}
184191

@@ -191,7 +198,7 @@ function load_lp() {
191198
load_lp_nowait "$mod" "$@"
192199

193200
# Wait until the transition finishes ...
194-
loop_until 'grep -q '^0$' /sys/kernel/livepatch/$mod/transition' ||
201+
loop_until 'grep -q '^0$' $SYSFS_KLP_DIR/$mod/transition' ||
195202
die "failed to complete transition"
196203
}
197204

@@ -241,12 +248,12 @@ function unload_lp() {
241248
function disable_lp() {
242249
local mod="$1"
243250

244-
log "% echo 0 > /sys/kernel/livepatch/$mod/enabled"
245-
echo 0 > /sys/kernel/livepatch/"$mod"/enabled
251+
log "% echo 0 > $SYSFS_KLP_DIR/$mod/enabled"
252+
echo 0 > "$SYSFS_KLP_DIR/$mod/enabled"
246253

247254
# Wait until the transition finishes and the livepatch gets
248255
# removed from sysfs...
249-
loop_until '[[ ! -e "/sys/kernel/livepatch/$mod" ]]' ||
256+
loop_until '[[ ! -e "$SYSFS_KLP_DIR/$mod" ]]' ||
250257
die "failed to disable livepatch $mod"
251258
}
252259

@@ -317,7 +324,7 @@ function check_sysfs_rights() {
317324
local rel_path="$1"; shift
318325
local expected_rights="$1"; shift
319326

320-
local path="$KLP_SYSFS_DIR/$mod/$rel_path"
327+
local path="$SYSFS_KLP_DIR/$mod/$rel_path"
321328
local rights=$(/bin/stat --format '%A' "$path")
322329
if test "$rights" != "$expected_rights" ; then
323330
die "Unexpected access rights of $path: $expected_rights vs. $rights"
@@ -333,7 +340,7 @@ function check_sysfs_value() {
333340
local rel_path="$1"; shift
334341
local expected_value="$1"; shift
335342

336-
local path="$KLP_SYSFS_DIR/$mod/$rel_path"
343+
local path="$SYSFS_KLP_DIR/$mod/$rel_path"
337344
local value=`cat $path`
338345
if test "$value" != "$expected_value" ; then
339346
die "Unexpected value in $path: $expected_value vs. $value"

tools/testing/selftests/livepatch/test-callbacks.sh

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ livepatch: '$MOD_LIVEPATCH': completing patching transition
4646
$MOD_LIVEPATCH: post_patch_callback: vmlinux
4747
$MOD_LIVEPATCH: post_patch_callback: $MOD_TARGET -> [MODULE_STATE_LIVE] Normal state
4848
livepatch: '$MOD_LIVEPATCH': patching complete
49-
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
49+
% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled
5050
livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
5151
$MOD_LIVEPATCH: pre_unpatch_callback: vmlinux
5252
$MOD_LIVEPATCH: pre_unpatch_callback: $MOD_TARGET -> [MODULE_STATE_LIVE] Normal state
@@ -94,7 +94,7 @@ livepatch: applying patch '$MOD_LIVEPATCH' to loading module '$MOD_TARGET'
9494
$MOD_LIVEPATCH: pre_patch_callback: $MOD_TARGET -> [MODULE_STATE_COMING] Full formed, running module_init
9595
$MOD_LIVEPATCH: post_patch_callback: $MOD_TARGET -> [MODULE_STATE_COMING] Full formed, running module_init
9696
$MOD_TARGET: ${MOD_TARGET}_init
97-
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
97+
% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled
9898
livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
9999
$MOD_LIVEPATCH: pre_unpatch_callback: vmlinux
100100
$MOD_LIVEPATCH: pre_unpatch_callback: $MOD_TARGET -> [MODULE_STATE_LIVE] Normal state
@@ -146,7 +146,7 @@ $MOD_TARGET: ${MOD_TARGET}_exit
146146
$MOD_LIVEPATCH: pre_unpatch_callback: $MOD_TARGET -> [MODULE_STATE_GOING] Going away
147147
livepatch: reverting patch '$MOD_LIVEPATCH' on unloading module '$MOD_TARGET'
148148
$MOD_LIVEPATCH: post_unpatch_callback: $MOD_TARGET -> [MODULE_STATE_GOING] Going away
149-
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
149+
% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled
150150
livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
151151
$MOD_LIVEPATCH: pre_unpatch_callback: vmlinux
152152
livepatch: '$MOD_LIVEPATCH': starting unpatching transition
@@ -195,7 +195,7 @@ $MOD_TARGET: ${MOD_TARGET}_exit
195195
$MOD_LIVEPATCH: pre_unpatch_callback: $MOD_TARGET -> [MODULE_STATE_GOING] Going away
196196
livepatch: reverting patch '$MOD_LIVEPATCH' on unloading module '$MOD_TARGET'
197197
$MOD_LIVEPATCH: post_unpatch_callback: $MOD_TARGET -> [MODULE_STATE_GOING] Going away
198-
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
198+
% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled
199199
livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
200200
$MOD_LIVEPATCH: pre_unpatch_callback: vmlinux
201201
livepatch: '$MOD_LIVEPATCH': starting unpatching transition
@@ -227,7 +227,7 @@ livepatch: '$MOD_LIVEPATCH': starting patching transition
227227
livepatch: '$MOD_LIVEPATCH': completing patching transition
228228
$MOD_LIVEPATCH: post_patch_callback: vmlinux
229229
livepatch: '$MOD_LIVEPATCH': patching complete
230-
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
230+
% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled
231231
livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
232232
$MOD_LIVEPATCH: pre_unpatch_callback: vmlinux
233233
livepatch: '$MOD_LIVEPATCH': starting unpatching transition
@@ -310,7 +310,7 @@ $MOD_LIVEPATCH: pre_patch_callback: $MOD_TARGET -> [MODULE_STATE_COMING] Full fo
310310
livepatch: pre-patch callback failed for object '$MOD_TARGET'
311311
livepatch: patch '$MOD_LIVEPATCH' failed for module '$MOD_TARGET', refusing to load module '$MOD_TARGET'
312312
modprobe: ERROR: could not insert '$MOD_TARGET': No such device
313-
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
313+
% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled
314314
livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
315315
$MOD_LIVEPATCH: pre_unpatch_callback: vmlinux
316316
livepatch: '$MOD_LIVEPATCH': starting unpatching transition
@@ -364,7 +364,7 @@ $MOD_TARGET: ${MOD_TARGET}_exit
364364
$MOD_LIVEPATCH: pre_unpatch_callback: $MOD_TARGET -> [MODULE_STATE_GOING] Going away
365365
livepatch: reverting patch '$MOD_LIVEPATCH' on unloading module '$MOD_TARGET'
366366
$MOD_LIVEPATCH: post_unpatch_callback: $MOD_TARGET -> [MODULE_STATE_GOING] Going away
367-
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
367+
% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled
368368
livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
369369
$MOD_LIVEPATCH: pre_unpatch_callback: vmlinux
370370
$MOD_LIVEPATCH: pre_unpatch_callback: $MOD_TARGET_BUSY -> [MODULE_STATE_LIVE] Normal state
@@ -412,7 +412,7 @@ load_lp_nowait $MOD_LIVEPATCH
412412

413413
# Wait until the livepatch reports in-transition state, i.e. that it's
414414
# stalled on $MOD_TARGET_BUSY::busymod_work_func()
415-
loop_until 'grep -q '^1$' /sys/kernel/livepatch/$MOD_LIVEPATCH/transition' ||
415+
loop_until 'grep -q '^1$' $SYSFS_KLP_DIR/$MOD_LIVEPATCH/transition' ||
416416
die "failed to stall transition"
417417

418418
load_mod $MOD_TARGET
@@ -438,7 +438,7 @@ $MOD_TARGET: ${MOD_TARGET}_init
438438
$MOD_TARGET: ${MOD_TARGET}_exit
439439
livepatch: reverting patch '$MOD_LIVEPATCH' on unloading module '$MOD_TARGET'
440440
$MOD_LIVEPATCH: post_unpatch_callback: $MOD_TARGET -> [MODULE_STATE_GOING] Going away
441-
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
441+
% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled
442442
livepatch: '$MOD_LIVEPATCH': reversing transition from patching to unpatching
443443
livepatch: '$MOD_LIVEPATCH': starting unpatching transition
444444
livepatch: '$MOD_LIVEPATCH': completing unpatching transition
@@ -483,14 +483,14 @@ livepatch: '$MOD_LIVEPATCH2': starting patching transition
483483
livepatch: '$MOD_LIVEPATCH2': completing patching transition
484484
$MOD_LIVEPATCH2: post_patch_callback: vmlinux
485485
livepatch: '$MOD_LIVEPATCH2': patching complete
486-
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH2/enabled
486+
% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH2/enabled
487487
livepatch: '$MOD_LIVEPATCH2': initializing unpatching transition
488488
$MOD_LIVEPATCH2: pre_unpatch_callback: vmlinux
489489
livepatch: '$MOD_LIVEPATCH2': starting unpatching transition
490490
livepatch: '$MOD_LIVEPATCH2': completing unpatching transition
491491
$MOD_LIVEPATCH2: post_unpatch_callback: vmlinux
492492
livepatch: '$MOD_LIVEPATCH2': unpatching complete
493-
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
493+
% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled
494494
livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
495495
$MOD_LIVEPATCH: pre_unpatch_callback: vmlinux
496496
livepatch: '$MOD_LIVEPATCH': starting unpatching transition
@@ -539,7 +539,7 @@ livepatch: '$MOD_LIVEPATCH2': starting patching transition
539539
livepatch: '$MOD_LIVEPATCH2': completing patching transition
540540
$MOD_LIVEPATCH2: post_patch_callback: vmlinux
541541
livepatch: '$MOD_LIVEPATCH2': patching complete
542-
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH2/enabled
542+
% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH2/enabled
543543
livepatch: '$MOD_LIVEPATCH2': initializing unpatching transition
544544
$MOD_LIVEPATCH2: pre_unpatch_callback: vmlinux
545545
livepatch: '$MOD_LIVEPATCH2': starting unpatching transition

tools/testing/selftests/livepatch/test-ftrace.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ livepatch: '$MOD_LIVEPATCH': starting patching transition
5353
livepatch: '$MOD_LIVEPATCH': completing patching transition
5454
livepatch: '$MOD_LIVEPATCH': patching complete
5555
livepatch: sysctl: setting key \"kernel.ftrace_enabled\": Device or resource busy
56-
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
56+
% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled
5757
livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
5858
livepatch: '$MOD_LIVEPATCH': starting unpatching transition
5959
livepatch: '$MOD_LIVEPATCH': completing unpatching transition
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#!/bin/bash
2+
# SPDX-License-Identifier: GPL-2.0
3+
# Copyright (C) 2024 SUSE
4+
# Author: Michael Vetter <[email protected]>
5+
6+
. $(dirname $0)/functions.sh
7+
8+
MOD_LIVEPATCH=test_klp_livepatch
9+
MOD_KPROBE=test_klp_kprobe
10+
11+
setup_config
12+
13+
# Kprobe a function and verify that we can't livepatch that same function
14+
# when it uses a post_handler since only one IPMODIFY maybe be registered
15+
# to any given function at a time.
16+
17+
start_test "livepatch interaction with kprobed function with post_handler"
18+
19+
echo 1 > "$SYSFS_KPROBES_DIR/enabled"
20+
21+
load_mod $MOD_KPROBE has_post_handler=true
22+
load_failing_mod $MOD_LIVEPATCH
23+
unload_mod $MOD_KPROBE
24+
25+
check_result "% modprobe test_klp_kprobe has_post_handler=true
26+
% modprobe $MOD_LIVEPATCH
27+
livepatch: enabling patch '$MOD_LIVEPATCH'
28+
livepatch: '$MOD_LIVEPATCH': initializing patching transition
29+
livepatch: failed to register ftrace handler for function 'cmdline_proc_show' (-16)
30+
livepatch: failed to patch object 'vmlinux'
31+
livepatch: failed to enable patch '$MOD_LIVEPATCH'
32+
livepatch: '$MOD_LIVEPATCH': canceling patching transition, going to unpatch
33+
livepatch: '$MOD_LIVEPATCH': completing unpatching transition
34+
livepatch: '$MOD_LIVEPATCH': unpatching complete
35+
modprobe: ERROR: could not insert '$MOD_LIVEPATCH': Device or resource busy
36+
% rmmod test_klp_kprobe"
37+
38+
start_test "livepatch interaction with kprobed function without post_handler"
39+
40+
load_mod $MOD_KPROBE has_post_handler=false
41+
load_lp $MOD_LIVEPATCH
42+
43+
unload_mod $MOD_KPROBE
44+
disable_lp $MOD_LIVEPATCH
45+
unload_lp $MOD_LIVEPATCH
46+
47+
check_result "% modprobe test_klp_kprobe has_post_handler=false
48+
% modprobe $MOD_LIVEPATCH
49+
livepatch: enabling patch '$MOD_LIVEPATCH'
50+
livepatch: '$MOD_LIVEPATCH': initializing patching transition
51+
livepatch: '$MOD_LIVEPATCH': starting patching transition
52+
livepatch: '$MOD_LIVEPATCH': completing patching transition
53+
livepatch: '$MOD_LIVEPATCH': patching complete
54+
% rmmod test_klp_kprobe
55+
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
56+
livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
57+
livepatch: '$MOD_LIVEPATCH': starting unpatching transition
58+
livepatch: '$MOD_LIVEPATCH': completing unpatching transition
59+
livepatch: '$MOD_LIVEPATCH': unpatching complete
60+
% rmmod $MOD_LIVEPATCH"
61+
62+
exit 0

tools/testing/selftests/livepatch/test-livepatch.sh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ livepatch: '$MOD_LIVEPATCH1': initializing patching transition
3939
livepatch: '$MOD_LIVEPATCH1': starting patching transition
4040
livepatch: '$MOD_LIVEPATCH1': completing patching transition
4141
livepatch: '$MOD_LIVEPATCH1': patching complete
42-
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH1/enabled
42+
% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH1/enabled
4343
livepatch: '$MOD_LIVEPATCH1': initializing unpatching transition
4444
livepatch: '$MOD_LIVEPATCH1': starting unpatching transition
4545
livepatch: '$MOD_LIVEPATCH1': completing unpatching transition
@@ -92,14 +92,14 @@ livepatch: '$MOD_REPLACE': completing patching transition
9292
livepatch: '$MOD_REPLACE': patching complete
9393
$MOD_LIVEPATCH1: this has been live patched
9494
$MOD_REPLACE: this has been live patched
95-
% echo 0 > /sys/kernel/livepatch/$MOD_REPLACE/enabled
95+
% echo 0 > $SYSFS_KLP_DIR/$MOD_REPLACE/enabled
9696
livepatch: '$MOD_REPLACE': initializing unpatching transition
9797
livepatch: '$MOD_REPLACE': starting unpatching transition
9898
livepatch: '$MOD_REPLACE': completing unpatching transition
9999
livepatch: '$MOD_REPLACE': unpatching complete
100100
% rmmod $MOD_REPLACE
101101
$MOD_LIVEPATCH1: this has been live patched
102-
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH1/enabled
102+
% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH1/enabled
103103
livepatch: '$MOD_LIVEPATCH1': initializing unpatching transition
104104
livepatch: '$MOD_LIVEPATCH1': starting unpatching transition
105105
livepatch: '$MOD_LIVEPATCH1': completing unpatching transition
@@ -128,7 +128,7 @@ for mod in $MOD_LIVEPATCH2 $MOD_LIVEPATCH3; do
128128
load_lp "$mod"
129129
done
130130

131-
mods=(/sys/kernel/livepatch/*)
131+
mods=($SYSFS_KLP_DIR/*)
132132
nmods=${#mods[@]}
133133
if [ "$nmods" -ne 3 ]; then
134134
die "Expecting three modules listed, found $nmods"
@@ -139,7 +139,7 @@ load_lp $MOD_REPLACE replace=1
139139
grep 'live patched' /proc/cmdline > /dev/kmsg
140140
grep 'live patched' /proc/meminfo > /dev/kmsg
141141

142-
loop_until 'mods=(/sys/kernel/livepatch/*); nmods=${#mods[@]}; [[ "$nmods" -eq 1 ]]' ||
142+
loop_until 'mods=($SYSFS_KLP_DIR/*); nmods=${#mods[@]}; [[ "$nmods" -eq 1 ]]' ||
143143
die "Expecting only one moduled listed, found $nmods"
144144

145145
# These modules were disabled by the atomic replace
@@ -188,7 +188,7 @@ $MOD_REPLACE: this has been live patched
188188
% rmmod $MOD_LIVEPATCH2
189189
% rmmod $MOD_LIVEPATCH1
190190
$MOD_REPLACE: this has been live patched
191-
% echo 0 > /sys/kernel/livepatch/$MOD_REPLACE/enabled
191+
% echo 0 > $SYSFS_KLP_DIR/$MOD_REPLACE/enabled
192192
livepatch: '$MOD_REPLACE': initializing unpatching transition
193193
livepatch: '$MOD_REPLACE': starting unpatching transition
194194
livepatch: '$MOD_REPLACE': completing unpatching transition

0 commit comments

Comments
 (0)