Re: [PATCH] trace_uprobe: Display correct offset in uprobe_events

From: Srikar Dronamraju
Date: Mon Jan 08 2018 - 08:58:14 EST


* Tobin C. Harding <me@xxxxxxxx> [2018-01-08 17:35:59]:

> On Mon, Jan 08, 2018 at 12:01:04PM +0530, Ravi Bangoria wrote:
> >
> >
> > On 01/08/2018 10:49 AM, Srikar Dronamraju wrote:
> > > * Ravi Bangoria <ravi.bangoria@xxxxxxxxxxxxxxxxxx> [2018-01-06 11:12:46]:
> > >
> > >> Recently, how the pointers being printed with %p has been changed
> > >> by commit ad67b74d2469 ("printk: hash addresses printed with %p").
> > >> This is causing a regression while showing offset in the
> > >> uprobe_events file. Instead of %p, use %px to display offset.
> > >>
> > >> Signed-off-by: Ravi Bangoria <ravi.bangoria@xxxxxxxxxxxxxxxxxx>
> > >> ---
> > >> kernel/trace/trace_uprobe.c | 2 +-
> > >> 1 file changed, 1 insertion(+), 1 deletion(-)
> > >>
> > >> diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c
> > >> index 40592e7b3568..268029ae1be6 100644
> > >> --- a/kernel/trace/trace_uprobe.c
> > >> +++ b/kernel/trace/trace_uprobe.c
> > >> @@ -608,7 +608,7 @@ static int probes_seq_show(struct seq_file *m, void *v)
> > >>
> > >> /* Don't print "0x (null)" when offset is 0 */
> > >> if (tu->offset) {
> > >> - seq_printf(m, "0x%p", (void *)tu->offset);
> > >> + seq_printf(m, "0x%px", (void *)tu->offset);
> > >> } else {
> > >> switch (sizeof(void *)) {
> > >> case 4:
> > > Looks good to me. Did you consider %pK instead of %px?
> >
> > Thanks Srikar,
> >
> > Checked %pK. But I see same issue with that:
> >
> > perf probe:
> >   Opening /sys/kernel/debug/tracing//uprobe_events write=1
> >   Writing event: p:probe_a/main /tmp/a.out:0x58c
> >
> > cat /sys/kernel/debug/tracing/uprobe_events:
> >   p:probe_a/main /tmp/a.out:0x0000000014fd571e
>
> %pK behaves the same as %p (hashes address) when kpt_restrict==0
>
> Hope this helps,

Thanks Tobin for the clarification. So %px is the right choice.

--
thanks and regards
Srikar