[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20170304113825.bda12eb55495bfe8018638f7@kernel.org>
Date: Sat, 4 Mar 2017 11:38:25 +0900
From: Masami Hiramatsu <mhiramat@...nel.org>
To: Masami Hiramatsu <mhiramat@...nel.org>
Cc: "Naveen N. Rao" <naveen.n.rao@...ux.vnet.ibm.com>,
Arnaldo Carvalho de Melo <acme@...nel.org>,
Steven Rostedt <rostedt@...dmis.org>,
Ingo Molnar <mingo@...hat.com>, linux-kernel@...r.kernel.org,
linuxppc-dev@...ts.ozlabs.org,
Ananth N Mavinakayanahalli <ananth@...ux.vnet.ibm.com>,
Michael Ellerman <mpe@...erman.id.au>
Subject: Re: [PATCH v4 2/3] perf: kretprobes: offset from reloc_sym if
kernel supports it
On Sat, 4 Mar 2017 11:35:51 +0900
Masami Hiramatsu <mhiramat@...nel.org> wrote:
> On Sat, 4 Mar 2017 09:49:11 +0900
> Masami Hiramatsu <mhiramat@...nel.org> wrote:
>
> > On Thu, 2 Mar 2017 23:25:06 +0530
> > "Naveen N. Rao" <naveen.n.rao@...ux.vnet.ibm.com> wrote:
> >
> > > We indicate support for accepting sym+offset with kretprobes through a
> > > line in ftrace README. Parse the same to identify support and choose the
> > > appropriate format for kprobe_events.
> >
> > Could you give us an example of this change here? :)
> > for example, comment of commit 613f050d68a8 .
> >
> > I think the code is OK, but we need actual example of result.
>
> Hi Naveen,
>
> I've tried following commands
>
> $ grep "[Tt] user_read$" /proc/kallsyms
> 0000000000000000 T user_read
> 0000000000000000 t user_read
> $ sudo ./perf probe -D user_read%return
> r:probe/user_read _text+3539616
> r:probe/user_read_1 _text+3653408
>
> OK, looks good. However, when I set the retprobes, I got an error.
>
> $ sudo ./perf probe -a user_read%return
> Failed to write event: Invalid argument
> Error: Failed to add events.
>
> And kernel rejected that.
>
> $ dmesg -k | tail -n 1
> [ 850.315068] Given offset is not valid for return probe.
>
> Hmm, curious..
>
> I tried normal probes
>
> $ sudo ./perf probe -D user_read
> p:probe/user_read _text+3539616
> p:probe/user_read_1 _text+3653408
> $ sudo ./perf probe -a user_read
> Added new events:
> probe:user_read (on user_read)
> probe:user_read_1 (on user_read)
>
> You can now use it in all perf tools, such as:
>
> perf record -e probe:user_read_1 -aR sleep 1
>
> It works!
>
> $ sudo ./perf probe -l
> probe:user_read (on user_read@...urity/keys/user_defined.c)
> probe:user_read_1 (on user_read@...inux/ss/policydb.c)
> $ sudo cat /sys/kernel/debug/kprobes/list
> ffffffff9237bf20 k user_read+0x0 [DISABLED][FTRACE]
> ffffffff923602a0 k user_read+0x0 [DISABLED][FTRACE]
>
> So, the both "_text+3539616" and "_text+3653408" are correctly located
> on the entry address of user_read functions. It seems kernel-side
> symbol+offset check is wrong.
FYI, without this patch, perf probe returns same place for same-name
functions. So this patch itself looks good.
$ sudo ./perf probe -D user_read%return
r:probe/user_read user_read+0
r:probe/user_read_1 user_read+0
Thanks,
--
Masami Hiramatsu <mhiramat@...nel.org>
Powered by blists - more mailing lists