forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'livepatching-for-6.1' of git://git.kernel.org/pub/scm/linu…
…x/kernel/git/livepatching/livepatching Pull livepatching updates from Petr Mladek: - Fix race between fork and livepatch transition revert - Add sysfs entry that shows "patched" state for each object (module) that can be livepatched by the given livepatch - Some clean up * tag 'livepatching-for-6.1' of git://git.kernel.org/pub/scm/linux/kernel/git/livepatching/livepatching: selftests/livepatch: add sysfs test livepatch: add sysfs entry "patched" for each klp_object selftests/livepatch: normalize sysctl error message livepatch: Add a missing newline character in klp_module_coming() livepatch: fix race between fork and KLP transition
- Loading branch information
Showing
6 changed files
with
166 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -55,6 +55,14 @@ Description: | |
The object directory contains subdirectories for each function | ||
that is patched within the object. | ||
|
||
What: /sys/kernel/livepatch/<patch>/<object>/patched | ||
Date: August 2022 | ||
KernelVersion: 6.1.0 | ||
Contact: [email protected] | ||
Description: | ||
An attribute which indicates whether the object is currently | ||
patched. | ||
|
||
What: /sys/kernel/livepatch/<patch>/<object>/<function,sympos> | ||
Date: Nov 2014 | ||
KernelVersion: 3.19.0 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
#!/bin/bash | ||
# SPDX-License-Identifier: GPL-2.0 | ||
# Copyright (C) 2022 Song Liu <[email protected]> | ||
|
||
. $(dirname $0)/functions.sh | ||
|
||
MOD_LIVEPATCH=test_klp_livepatch | ||
|
||
setup_config | ||
|
||
# - load a livepatch and verifies the sysfs entries work as expected | ||
|
||
start_test "sysfs test" | ||
|
||
load_lp $MOD_LIVEPATCH | ||
|
||
check_sysfs_rights "$MOD_LIVEPATCH" "" "drwxr-xr-x" | ||
check_sysfs_rights "$MOD_LIVEPATCH" "enabled" "-rw-r--r--" | ||
check_sysfs_value "$MOD_LIVEPATCH" "enabled" "1" | ||
check_sysfs_rights "$MOD_LIVEPATCH" "force" "--w-------" | ||
check_sysfs_rights "$MOD_LIVEPATCH" "transition" "-r--r--r--" | ||
check_sysfs_value "$MOD_LIVEPATCH" "transition" "0" | ||
check_sysfs_rights "$MOD_LIVEPATCH" "vmlinux/patched" "-r--r--r--" | ||
check_sysfs_value "$MOD_LIVEPATCH" "vmlinux/patched" "1" | ||
|
||
disable_lp $MOD_LIVEPATCH | ||
|
||
unload_lp $MOD_LIVEPATCH | ||
|
||
check_result "% modprobe $MOD_LIVEPATCH | ||
livepatch: enabling patch '$MOD_LIVEPATCH' | ||
livepatch: '$MOD_LIVEPATCH': initializing patching transition | ||
livepatch: '$MOD_LIVEPATCH': starting patching transition | ||
livepatch: '$MOD_LIVEPATCH': completing patching transition | ||
livepatch: '$MOD_LIVEPATCH': patching complete | ||
% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled | ||
livepatch: '$MOD_LIVEPATCH': initializing unpatching transition | ||
livepatch: '$MOD_LIVEPATCH': starting unpatching transition | ||
livepatch: '$MOD_LIVEPATCH': completing unpatching transition | ||
livepatch: '$MOD_LIVEPATCH': unpatching complete | ||
% rmmod $MOD_LIVEPATCH" | ||
|
||
start_test "sysfs test object/patched" | ||
|
||
MOD_LIVEPATCH=test_klp_callbacks_demo | ||
MOD_TARGET=test_klp_callbacks_mod | ||
load_lp $MOD_LIVEPATCH | ||
|
||
# check the "patch" file changes as target module loads/unloads | ||
check_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0" | ||
load_mod $MOD_TARGET | ||
check_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "1" | ||
unload_mod $MOD_TARGET | ||
check_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0" | ||
|
||
disable_lp $MOD_LIVEPATCH | ||
unload_lp $MOD_LIVEPATCH | ||
|
||
check_result "% modprobe test_klp_callbacks_demo | ||
livepatch: enabling patch 'test_klp_callbacks_demo' | ||
livepatch: 'test_klp_callbacks_demo': initializing patching transition | ||
test_klp_callbacks_demo: pre_patch_callback: vmlinux | ||
livepatch: 'test_klp_callbacks_demo': starting patching transition | ||
livepatch: 'test_klp_callbacks_demo': completing patching transition | ||
test_klp_callbacks_demo: post_patch_callback: vmlinux | ||
livepatch: 'test_klp_callbacks_demo': patching complete | ||
% modprobe test_klp_callbacks_mod | ||
livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' | ||
test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init | ||
test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init | ||
test_klp_callbacks_mod: test_klp_callbacks_mod_init | ||
% rmmod test_klp_callbacks_mod | ||
test_klp_callbacks_mod: test_klp_callbacks_mod_exit | ||
test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away | ||
livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' | ||
test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away | ||
% echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled | ||
livepatch: 'test_klp_callbacks_demo': initializing unpatching transition | ||
test_klp_callbacks_demo: pre_unpatch_callback: vmlinux | ||
livepatch: 'test_klp_callbacks_demo': starting unpatching transition | ||
livepatch: 'test_klp_callbacks_demo': completing unpatching transition | ||
test_klp_callbacks_demo: post_unpatch_callback: vmlinux | ||
livepatch: 'test_klp_callbacks_demo': unpatching complete | ||
% rmmod test_klp_callbacks_demo" | ||
|
||
exit 0 |