Save the state of /sys/kernel/debug/kprobes/enabled
during setup_config() and restore it during cleanup().
This is in preparation for a future commit that will add a test
that should confirm that we cannot livepatch a kprobed function
if that kprobe has a post handler.
Signed-off-by: Michael Vetter <mvetter@suse.com>
---
tools/testing/selftests/livepatch/functions.sh | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing/selftests/livepatch/functions.sh
index e0e7f8db894c..e78e0e16ad4d 100644
--- a/tools/testing/selftests/livepatch/functions.sh
+++ b/tools/testing/selftests/livepatch/functions.sh
@@ -6,7 +6,10 @@
MAX_RETRIES=600
RETRY_INTERVAL=".1" # seconds
-SYSFS_KLP_DIR="/sys/kernel/livepatch"
+SYSFS_KERNEL_DIR="/sys/kernel"
+SYSFS_KLP_DIR="$SYSFS_KERNEL_DIR/livepatch"
+SYSFS_DEBUG_DIR="$SYSFS_KERNEL_DIR/debug"
+SYSFS_KPROBES_DIR="$SYSFS_DEBUG_DIR/kprobes"
# Kselftest framework requirement - SKIP code is 4
ksft_skip=4
@@ -55,22 +58,26 @@ function die() {
}
function push_config() {
- DYNAMIC_DEBUG=$(grep '^kernel/livepatch' /sys/kernel/debug/dynamic_debug/control | \
+ DYNAMIC_DEBUG=$(grep '^kernel/livepatch' "$SYSFS_DEBUG_DIR/dynamic_debug/control" | \
awk -F'[: ]' '{print "file " $1 " line " $2 " " $4}')
FTRACE_ENABLED=$(sysctl --values kernel.ftrace_enabled)
+ KPROBE_ENABLED=$(cat "$SYSFS_KPROBES_DIR/enabled")
}
function pop_config() {
if [[ -n "$DYNAMIC_DEBUG" ]]; then
- echo -n "$DYNAMIC_DEBUG" > /sys/kernel/debug/dynamic_debug/control
+ echo -n "$DYNAMIC_DEBUG" > "$SYSFS_DEBUG_DIR/dynamic_debug/control"
fi
if [[ -n "$FTRACE_ENABLED" ]]; then
sysctl kernel.ftrace_enabled="$FTRACE_ENABLED" &> /dev/null
fi
+ if [[ -n "$KPROBE_ENABLED" ]]; then
+ echo "$KPROBE_ENABLED" > "$SYSFS_KPROBES_DIR/enabled"
+ fi
}
function set_dynamic_debug() {
- cat <<-EOF > /sys/kernel/debug/dynamic_debug/control
+ cat <<-EOF > "$SYSFS_DEBUG_DIR/dynamic_debug/control"
file kernel/livepatch/* +p
func klp_try_switch_task -p
EOF
--
2.47.0
Hi, On Thu, 17 Oct 2024, Michael Vetter wrote: > Save the state of /sys/kernel/debug/kprobes/enabled > during setup_config() and restore it during cleanup(). > > This is in preparation for a future commit that will add a test > that should confirm that we cannot livepatch a kprobed function > if that kprobe has a post handler. > > Signed-off-by: Michael Vetter <mvetter@suse.com> > --- > tools/testing/selftests/livepatch/functions.sh | 15 +++++++++++---- > 1 file changed, 11 insertions(+), 4 deletions(-) > > diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing/selftests/livepatch/functions.sh > index e0e7f8db894c..e78e0e16ad4d 100644 > --- a/tools/testing/selftests/livepatch/functions.sh > +++ b/tools/testing/selftests/livepatch/functions.sh > @@ -6,7 +6,10 @@ > > MAX_RETRIES=600 > RETRY_INTERVAL=".1" # seconds > -SYSFS_KLP_DIR="/sys/kernel/livepatch" > +SYSFS_KERNEL_DIR="/sys/kernel" > +SYSFS_KLP_DIR="$SYSFS_KERNEL_DIR/livepatch" > +SYSFS_DEBUG_DIR="$SYSFS_KERNEL_DIR/debug" > +SYSFS_KPROBES_DIR="$SYSFS_DEBUG_DIR/kprobes" there are still two occurrences of /sys/kernel/ in test-syscall.sh which can be replaced with $SYSFS_KERNEL_DIR now. I suppose that Petr can fix that when applying as well. The patch also contains two separate things... the cleanup and the kprobe state handling. Ideally, it should be split but unless someone else also speaks up, I can certainly live with the current state. With that Reviewed-by: Miroslav Benes <mbenes@suse.cz> M
© 2016 - 2024 Red Hat, Inc.