linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).