FAILED: patch "[PATCH] tracing/eprobes: Fix reading of string fields" failed to apply to 5.15-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From f04dec93466a0481763f3b56cdadf8076e28bfbf Mon Sep 17 00:00:00 2001
From: "Steven Rostedt (Google)" <[email protected]>
Date: Sat, 20 Aug 2022 09:43:19 -0400
Subject: [PATCH] tracing/eprobes: Fix reading of string fields
Currently when an event probe (eprobe) hooks to a string field, it does not display it as a string, but instead as a number. This makes the field rather useless. Handle the different kinds of strings, dynamic, static, relational/dynamic etc.
Now when a string field is used, the ":string" type can be used to display it:
echo "e:sw sched/sched_switch comm=$next_comm:string" > dynamic_events
kernel/trace/trace_eprobe.c +21 -0
@@ -311,6 +311,27 @@ static unsigned long get_event_field(struct fetch_insn *code, void *rec) addr = rec + field->offset; +if (is_string_field (field)) { +switch (field->filter_type) { +case FILTER_DYN_STRING : + val = (unsigned long )(rec + (*(unsigned int *)addr &0xffff )); +break ; +case FILTER_RDYN_STRING : + val = (unsigned long )(addr + (*(unsigned int *)addr &0xffff )); +break ; +case FILTER_STATIC_STRING : + val = (unsigned long )addr; +break ; +case FILTER_PTR_STRING : + val = (unsigned long )(*(char *)addr); +break ; +default : +WARN_ON_ONCE (1 ); +return 0 ; + } +return val; + } +switch (field->size) {case 1 :if (field->is_signed)
This is the backport to 5.15.
-- Steve
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
f04dec93466a0481763f3b56cdadf8076e28bfbfMon Sep 17 00:00:00 2001
From: "Steven Rostedt (Google)" <[email protected]>
Date: Sat, 20 Aug 2022 09:43:19 -0400
Subject: [PATCH] tracing/eprobes: Fix reading of string fields
Currently when an event probe (eprobe) hooks to a string field, it does not display it as a string, but instead as a number. This makes the field rather useless. Handle the different kinds of strings, dynamic, static, relational/dynamic etc.
Now when a string field is used, the ":string" type can be used to display it:
echo "e:sw sched/sched_switch comm=$next_comm:string" > dynamic_events
--- kernel/trace/trace_eprobe.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
kernel/trace/trace_eprobe.c +18 -0
@@ -320,6 +320,24 @@ static unsigned long get_event_field(str addr = rec + field->offset; +if (is_string_field (field)) { +switch (field->filter_type) { +case FILTER_DYN_STRING : + val = (unsigned long )(rec + (*(unsigned int *)addr &0xffff )); +break ; +case FILTER_STATIC_STRING : + val = (unsigned long )addr; +break ; +case FILTER_PTR_STRING : + val = (unsigned long )(*(char *)addr); +break ; +default : +WARN_ON_ONCE (1 ); +return 0 ; + } +return val; + } +switch (field->size) {case 1 :if (field->is_signed)
Greg KH
maintainerQuoted 2 lines · Steven Rostedt
This is the backport to 5.15.
Now queued up, thanks.
greg k-h