Message ID | 20241017200132.21946-3-mvetter@suse.com |
---|---|
State | New |
Headers | show |
Series | selftests: livepatch: test livepatching a kprobed function | expand |
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
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
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(-)