* [PATCH v3 0/2] selftests: livepatch: test if ftrace can trace a livepatched function
@ 2025-03-24 22:50 Filipe Xavier
2025-03-24 22:50 ` [PATCH v3 1/2] selftests: livepatch: add new ftrace helpers functions Filipe Xavier
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Filipe Xavier @ 2025-03-24 22:50 UTC (permalink / raw)
To: Josh Poimboeuf, Jiri Kosina, Miroslav Benes, Petr Mladek,
Joe Lawrence, Shuah Khan, Marcos Paulo de Souza
Cc: live-patching, linux-kselftest, linux-kernel, felipe_life,
Filipe Xavier
This patchset add ftrace helpers functions and
add a new test makes sure that ftrace can trace
a function that was introduced by a livepatch.
Signed-off-by: Filipe Xavier <felipeaggger@gmail.com>
Suggested-by: Marcos Paulo de Souza <mpdesouza@suse.com>
Reviewed-by: Marcos Paulo de Souza <mpdesouza@suse.com>
Acked-by: Miroslav Benes <mbenes@suse.cz>
---
Changes in v3:
- functions.sh: fixed sed to remove warning from shellcheck and add grep -Fw params.
- test-ftrace.sh: change constant to use common SYSFS_KLP_DIR.
- Link to v2: https://lore.kernel.org/r/20250318-ftrace-sftest-livepatch-v2-0-60cb0aa95cca@gmail.com
Changes in v2:
- functions.sh: change check traced function to accept a list of functions.
- Link to v1: https://lore.kernel.org/r/20250306-ftrace-sftest-livepatch-v1-0-a6f1dfc30e17@gmail.com
---
Filipe Xavier (2):
selftests: livepatch: add new ftrace helpers functions
selftests: livepatch: test if ftrace can trace a livepatched function
tools/testing/selftests/livepatch/functions.sh | 49 ++++++++++++++++++++++++
tools/testing/selftests/livepatch/test-ftrace.sh | 34 ++++++++++++++++
2 files changed, 83 insertions(+)
---
base-commit: 848e076317446f9c663771ddec142d7c2eb4cb43
change-id: 20250306-ftrace-sftest-livepatch-60d9dc472235
Best regards,
--
Filipe Xavier <felipeaggger@gmail.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 1/2] selftests: livepatch: add new ftrace helpers functions
2025-03-24 22:50 [PATCH v3 0/2] selftests: livepatch: test if ftrace can trace a livepatched function Filipe Xavier
@ 2025-03-24 22:50 ` Filipe Xavier
2025-03-24 22:50 ` [PATCH v3 2/2] selftests: livepatch: test if ftrace can trace a livepatched function Filipe Xavier
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Filipe Xavier @ 2025-03-24 22:50 UTC (permalink / raw)
To: Josh Poimboeuf, Jiri Kosina, Miroslav Benes, Petr Mladek,
Joe Lawrence, Shuah Khan, Marcos Paulo de Souza
Cc: live-patching, linux-kselftest, linux-kernel, felipe_life,
Filipe Xavier
Add new ftrace helpers functions cleanup_tracing, trace_function and
check_traced_functions.
Signed-off-by: Filipe Xavier <felipeaggger@gmail.com>
---
tools/testing/selftests/livepatch/functions.sh | 49 ++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing/selftests/livepatch/functions.sh
index 15601402dee6567837c2c49ba342eb357e410d18..46991a029f7c64ace3945727b3540521ffe2e529 100644
--- a/tools/testing/selftests/livepatch/functions.sh
+++ b/tools/testing/selftests/livepatch/functions.sh
@@ -10,6 +10,7 @@ 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"
+SYSFS_TRACING_DIR="$SYSFS_DEBUG_DIR/tracing"
# Kselftest framework requirement - SKIP code is 4
ksft_skip=4
@@ -62,6 +63,9 @@ function push_config() {
awk -F'[: ]' '{print "file " $1 " line " $2 " " $4}')
FTRACE_ENABLED=$(sysctl --values kernel.ftrace_enabled)
KPROBE_ENABLED=$(cat "$SYSFS_KPROBES_DIR/enabled")
+ TRACING_ON=$(cat "$SYSFS_TRACING_DIR/tracing_on")
+ CURRENT_TRACER=$(cat "$SYSFS_TRACING_DIR/current_tracer")
+ FTRACE_FILTER=$(cat "$SYSFS_TRACING_DIR/set_ftrace_filter")
}
function pop_config() {
@@ -74,6 +78,17 @@ function pop_config() {
if [[ -n "$KPROBE_ENABLED" ]]; then
echo "$KPROBE_ENABLED" > "$SYSFS_KPROBES_DIR/enabled"
fi
+ if [[ -n "$TRACING_ON" ]]; then
+ echo "$TRACING_ON" > "$SYSFS_TRACING_DIR/tracing_on"
+ fi
+ if [[ -n "$CURRENT_TRACER" ]]; then
+ echo "$CURRENT_TRACER" > "$SYSFS_TRACING_DIR/current_tracer"
+ fi
+ if [[ -n "$FTRACE_FILTER" ]]; then
+ echo "$FTRACE_FILTER" \
+ | sed -e "/#### all functions enabled ####/d" \
+ > "$SYSFS_TRACING_DIR/set_ftrace_filter"
+ fi
}
function set_dynamic_debug() {
@@ -352,3 +367,37 @@ function check_sysfs_value() {
die "Unexpected value in $path: $expected_value vs. $value"
fi
}
+
+# cleanup_tracing() - stop and clean up function tracing
+function cleanup_tracing() {
+ echo 0 > "$SYSFS_TRACING_DIR/tracing_on"
+ echo "" > "$SYSFS_TRACING_DIR/set_ftrace_filter"
+ echo "nop" > "$SYSFS_TRACING_DIR/current_tracer"
+ echo "" > "$SYSFS_TRACING_DIR/trace"
+}
+
+# trace_function(function) - start tracing of a function
+# function - to be traced function
+function trace_function() {
+ local function="$1"; shift
+
+ cleanup_tracing
+
+ echo "function" > "$SYSFS_TRACING_DIR/current_tracer"
+ echo "$function" > "$SYSFS_TRACING_DIR/set_ftrace_filter"
+ echo 1 > "$SYSFS_TRACING_DIR/tracing_on"
+}
+
+# check_traced_functions(functions...) - check whether each function appeared in the trace log
+# functions - list of functions to be checked
+function check_traced_functions() {
+ local function
+
+ for function in "$@"; do
+ if ! grep -Fwq "$function" "$SYSFS_TRACING_DIR/trace" ; then
+ die "Function ($function) did not appear in the trace"
+ fi
+ done
+
+ cleanup_tracing
+}
--
2.46.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 2/2] selftests: livepatch: test if ftrace can trace a livepatched function
2025-03-24 22:50 [PATCH v3 0/2] selftests: livepatch: test if ftrace can trace a livepatched function Filipe Xavier
2025-03-24 22:50 ` [PATCH v3 1/2] selftests: livepatch: add new ftrace helpers functions Filipe Xavier
@ 2025-03-24 22:50 ` Filipe Xavier
2025-03-25 13:29 ` [PATCH v3 0/2] " Joe Lawrence
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Filipe Xavier @ 2025-03-24 22:50 UTC (permalink / raw)
To: Josh Poimboeuf, Jiri Kosina, Miroslav Benes, Petr Mladek,
Joe Lawrence, Shuah Khan, Marcos Paulo de Souza
Cc: live-patching, linux-kselftest, linux-kernel, felipe_life,
Filipe Xavier
This new test makes sure that ftrace can trace a
function that was introduced by a livepatch.
Signed-off-by: Filipe Xavier <felipeaggger@gmail.com>
---
tools/testing/selftests/livepatch/test-ftrace.sh | 34 ++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/tools/testing/selftests/livepatch/test-ftrace.sh b/tools/testing/selftests/livepatch/test-ftrace.sh
index fe14f248913acbec46fb6c0fec38a2fc84209d39..094176f1a46aee8cf08667ae9e31ae8720bc1ae1 100755
--- a/tools/testing/selftests/livepatch/test-ftrace.sh
+++ b/tools/testing/selftests/livepatch/test-ftrace.sh
@@ -61,4 +61,38 @@ livepatch: '$MOD_LIVEPATCH': unpatching complete
% rmmod $MOD_LIVEPATCH"
+# - verify livepatch can load
+# - check if traces have a patched function
+# - reset trace and unload livepatch
+
+start_test "trace livepatched function and check that the live patch remains in effect"
+
+FUNCTION_NAME="livepatch_cmdline_proc_show"
+
+load_lp $MOD_LIVEPATCH
+trace_function "$FUNCTION_NAME"
+
+if [[ "$(cat /proc/cmdline)" == "$MOD_LIVEPATCH: this has been live patched" ]] ; then
+ log "livepatch: ok"
+fi
+
+check_traced_functions "$FUNCTION_NAME"
+
+disable_lp $MOD_LIVEPATCH
+unload_lp $MOD_LIVEPATCH
+
+check_result "% insmod test_modules/$MOD_LIVEPATCH.ko
+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
+livepatch: ok
+% echo 0 > $SYSFS_KLP_DIR/$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"
+
exit 0
--
2.46.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 0/2] selftests: livepatch: test if ftrace can trace a livepatched function
2025-03-24 22:50 [PATCH v3 0/2] selftests: livepatch: test if ftrace can trace a livepatched function Filipe Xavier
2025-03-24 22:50 ` [PATCH v3 1/2] selftests: livepatch: add new ftrace helpers functions Filipe Xavier
2025-03-24 22:50 ` [PATCH v3 2/2] selftests: livepatch: test if ftrace can trace a livepatched function Filipe Xavier
@ 2025-03-25 13:29 ` Joe Lawrence
2025-03-25 13:56 ` Petr Mladek
2025-03-25 14:01 ` Petr Mladek
4 siblings, 0 replies; 7+ messages in thread
From: Joe Lawrence @ 2025-03-25 13:29 UTC (permalink / raw)
To: Filipe Xavier
Cc: Josh Poimboeuf, Jiri Kosina, Miroslav Benes, Petr Mladek,
Shuah Khan, Marcos Paulo de Souza, live-patching, linux-kselftest,
linux-kernel, felipe_life
On Mon, Mar 24, 2025 at 07:50:17PM -0300, Filipe Xavier wrote:
> This patchset add ftrace helpers functions and
> add a new test makes sure that ftrace can trace
> a function that was introduced by a livepatch.
>
> Signed-off-by: Filipe Xavier <felipeaggger@gmail.com>
> Suggested-by: Marcos Paulo de Souza <mpdesouza@suse.com>
> Reviewed-by: Marcos Paulo de Souza <mpdesouza@suse.com>
> Acked-by: Miroslav Benes <mbenes@suse.cz>
> ---
> Changes in v3:
> - functions.sh: fixed sed to remove warning from shellcheck and add grep -Fw params.
Oh, now I see what shellcheck was complaining about. I missed that
there was no '\' line continuation char at the end of the sed line. I
thought it was complaining about starting the subsequent lines with the
'|' and '>' redirection chars. Good eye on catching that :)
> - test-ftrace.sh: change constant to use common SYSFS_KLP_DIR.
> - Link to v2: https://lore.kernel.org/r/20250318-ftrace-sftest-livepatch-v2-0-60cb0aa95cca@gmail.com
>
For both patches:
Acked-by: Joe Lawrence <joe.lawrence@redhat.com>
Thanks,
-- Joe
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 0/2] selftests: livepatch: test if ftrace can trace a livepatched function
2025-03-24 22:50 [PATCH v3 0/2] selftests: livepatch: test if ftrace can trace a livepatched function Filipe Xavier
` (2 preceding siblings ...)
2025-03-25 13:29 ` [PATCH v3 0/2] " Joe Lawrence
@ 2025-03-25 13:56 ` Petr Mladek
2025-03-25 14:01 ` Petr Mladek
4 siblings, 0 replies; 7+ messages in thread
From: Petr Mladek @ 2025-03-25 13:56 UTC (permalink / raw)
To: Filipe Xavier
Cc: Josh Poimboeuf, Jiri Kosina, Miroslav Benes, Joe Lawrence,
Shuah Khan, Marcos Paulo de Souza, live-patching, linux-kselftest,
linux-kernel, felipe_life
On Mon 2025-03-24 19:50:17, Filipe Xavier wrote:
> This patchset add ftrace helpers functions and
> add a new test makes sure that ftrace can trace
> a function that was introduced by a livepatch.
>
> Signed-off-by: Filipe Xavier <felipeaggger@gmail.com>
> Acked-by: Miroslav Benes <mbenes@suse.cz>
For both patches:
Reviewed-by: Petr Mladek <pmladek@suse.com>
Tested-by: Petr Mladek <pmladek@suse.com>
Best Regards,
Petr
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 0/2] selftests: livepatch: test if ftrace can trace a livepatched function
2025-03-24 22:50 [PATCH v3 0/2] selftests: livepatch: test if ftrace can trace a livepatched function Filipe Xavier
` (3 preceding siblings ...)
2025-03-25 13:56 ` Petr Mladek
@ 2025-03-25 14:01 ` Petr Mladek
2025-03-25 14:46 ` Filipe Xavier
4 siblings, 1 reply; 7+ messages in thread
From: Petr Mladek @ 2025-03-25 14:01 UTC (permalink / raw)
To: Filipe Xavier
Cc: Josh Poimboeuf, Jiri Kosina, Miroslav Benes, Joe Lawrence,
Shuah Khan, Marcos Paulo de Souza, live-patching, linux-kselftest,
linux-kernel, felipe_life
On Mon 2025-03-24 19:50:17, Filipe Xavier wrote:
> This patchset add ftrace helpers functions and
> add a new test makes sure that ftrace can trace
> a function that was introduced by a livepatch.
>
> Signed-off-by: Filipe Xavier <felipeaggger@gmail.com>
> Acked-by: Miroslav Benes <mbenes@suse.cz>
JFYI, the patchset has been committed into livepatching.git,
branch for-6.15/ftrace-test.
I had a dilemma whether to push it for 6.15 or postpone it.
But it is a selftest and quite trivial. And it has been
reviewed by several people. And it seems to work well
so I think that we could push it for 6.15.
Best Regards,
Petr
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 0/2] selftests: livepatch: test if ftrace can trace a livepatched function
2025-03-25 14:01 ` Petr Mladek
@ 2025-03-25 14:46 ` Filipe Xavier
0 siblings, 0 replies; 7+ messages in thread
From: Filipe Xavier @ 2025-03-25 14:46 UTC (permalink / raw)
To: Petr Mladek
Cc: Josh Poimboeuf, Jiri Kosina, Miroslav Benes, Joe Lawrence,
Shuah Khan, Marcos Paulo de Souza, live-patching, linux-kselftest,
linux-kernel, felipe_life
On 3/25/25 11:01 AM, Petr Mladek wrote:
> On Mon 2025-03-24 19:50:17, Filipe Xavier wrote:
>> This patchset add ftrace helpers functions and
>> add a new test makes sure that ftrace can trace
>> a function that was introduced by a livepatch.
>>
>> Signed-off-by: Filipe Xavier <felipeaggger@gmail.com>
>> Acked-by: Miroslav Benes <mbenes@suse.cz>
> JFYI, the patchset has been committed into livepatching.git,
> branch for-6.15/ftrace-test.
>
> I had a dilemma whether to push it for 6.15 or postpone it.
> But it is a selftest and quite trivial. And it has been
> reviewed by several people. And it seems to work well
> so I think that we could push it for 6.15.
It sounds good to me, thank you all very much for the support.
Cheers,
Filipe
> Best Regards,
> Petr
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-03-25 14:46 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-24 22:50 [PATCH v3 0/2] selftests: livepatch: test if ftrace can trace a livepatched function Filipe Xavier
2025-03-24 22:50 ` [PATCH v3 1/2] selftests: livepatch: add new ftrace helpers functions Filipe Xavier
2025-03-24 22:50 ` [PATCH v3 2/2] selftests: livepatch: test if ftrace can trace a livepatched function Filipe Xavier
2025-03-25 13:29 ` [PATCH v3 0/2] " Joe Lawrence
2025-03-25 13:56 ` Petr Mladek
2025-03-25 14:01 ` Petr Mladek
2025-03-25 14:46 ` Filipe Xavier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).