diff mbox series

[v4] trace/kprobe: Display the actual notrace function when rejecting a probe

Message ID 20231214051702.1687300-1-naveen@kernel.org (mailing list archive)
State Accepted
Commit 9c556b7c3f520d42c435c0d78b25c719c060f8a1
Headers show
Series [v4] trace/kprobe: Display the actual notrace function when rejecting a probe | expand

Commit Message

Naveen N Rao Dec. 14, 2023, 5:17 a.m. UTC
Trying to probe update_sd_lb_stats() using perf results in the below
message in the kernel log:
	trace_kprobe: Could not probe notrace function _text

This is because 'perf probe' specifies the kprobe location as an offset
from '_text':
	$ sudo perf probe -D update_sd_lb_stats
	p:probe/update_sd_lb_stats _text+1830728

However, the error message is misleading and doesn't help convey the
actual notrace function that is being probed. Fix this by looking up the
actual function name that is being probed. With this fix, we now get the
below message in the kernel log:
	trace_kprobe: Could not probe notrace function update_sd_lb_stats.constprop.0

Signed-off-by: Naveen N Rao <naveen@kernel.org>
---
v4: Use printk format specifier %ps with probe address to lookup the 
symbol, as suggested by Masami.

 kernel/trace/trace_kprobe.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)


base-commit: 4758560fa268cecfa1144f015aa9f2525d164b7e

Comments

Masami Hiramatsu (Google) Dec. 17, 2023, 7:18 a.m. UTC | #1
On Thu, 14 Dec 2023 10:47:02 +0530
Naveen N Rao <naveen@kernel.org> wrote:

> Trying to probe update_sd_lb_stats() using perf results in the below
> message in the kernel log:
> 	trace_kprobe: Could not probe notrace function _text
> 
> This is because 'perf probe' specifies the kprobe location as an offset
> from '_text':
> 	$ sudo perf probe -D update_sd_lb_stats
> 	p:probe/update_sd_lb_stats _text+1830728
> 
> However, the error message is misleading and doesn't help convey the
> actual notrace function that is being probed. Fix this by looking up the
> actual function name that is being probed. With this fix, we now get the
> below message in the kernel log:
> 	trace_kprobe: Could not probe notrace function update_sd_lb_stats.constprop.0
> 

OK, this looks good to me. let me pick this.

Thank you!

> Signed-off-by: Naveen N Rao <naveen@kernel.org>
> ---
> v4: Use printk format specifier %ps with probe address to lookup the 
> symbol, as suggested by Masami.
> 
>  kernel/trace/trace_kprobe.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
> index 3d7a180a8427..0017404d6e8d 100644
> --- a/kernel/trace/trace_kprobe.c
> +++ b/kernel/trace/trace_kprobe.c
> @@ -487,8 +487,8 @@ static int __register_trace_kprobe(struct trace_kprobe *tk)
>  		return -EINVAL;
>  
>  	if (within_notrace_func(tk)) {
> -		pr_warn("Could not probe notrace function %s\n",
> -			trace_kprobe_symbol(tk));
> +		pr_warn("Could not probe notrace function %ps\n",
> +			(void *)trace_kprobe_address(tk));
>  		return -EINVAL;
>  	}
>  
> 
> base-commit: 4758560fa268cecfa1144f015aa9f2525d164b7e
> -- 
> 2.43.0
>
diff mbox series

Patch

diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index 3d7a180a8427..0017404d6e8d 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -487,8 +487,8 @@  static int __register_trace_kprobe(struct trace_kprobe *tk)
 		return -EINVAL;
 
 	if (within_notrace_func(tk)) {
-		pr_warn("Could not probe notrace function %s\n",
-			trace_kprobe_symbol(tk));
+		pr_warn("Could not probe notrace function %ps\n",
+			(void *)trace_kprobe_address(tk));
 		return -EINVAL;
 	}