Re: [PATCH v2 12/39] x86/ibt,ftrace: Search for __fentry__ location
From: Josh Poimboeuf
Date: Thu Feb 24 2022 - 17:46:43 EST
On Thu, Feb 24, 2022 at 11:01:30AM -0500, Steven Rostedt wrote:
> On Thu, 24 Feb 2022 10:58:47 -0500
> Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
>
> > On Fri, 25 Feb 2022 00:55:20 +0900
> > Masami Hiramatsu <mhiramat@xxxxxxxxxx> wrote:
> >
> > > > unsigned long ftrace_location(unsigned long ip)
> > > > {
> > > > - return ftrace_location_range(ip, ip);
> > > > + struct dyn_ftrace *rec;
> > > > + unsigned long offset;
> > > > + unsigned long size;
> > > > +
> > > > + rec = lookup_rec(ip, ip);
> > > > + if (!rec) {
> > > > + if (!kallsyms_lookup_size_offset(ip, &size, &offset))
> > > > + goto out;
> > > > +
> > > > + if (!offset)
> > >
> > > Isn't this 'if (offset)' ?
> >
> > No, the point to only look for the fentry location if the ip passed in
> > points to the start of the function. IOW, +0 offset.
> >
>
> I do agree with Masami that it is confusing. Please add a comment:
>
> /* Search the entire function if ip is the start of the function */
> if (!offset)
> [..]
>
> -- Steve
>
> >
> >
> > >
> > > > + rec = lookup_rec(ip - offset, (ip - offset) + size);
If 'offset' is zero then why the math here? ^^^^^^^^^^^ ^^^^^^^^^^^
--
Josh