Re: [PATCH v7 08/18] static_call: Avoid kprobes on inline static_call()s

From: Masami Hiramatsu
Date: Wed Sep 02 2020 - 06:16:52 EST


On Wed, 2 Sep 2020 11:48:20 +0200
peterz@xxxxxxxxxxxxx wrote:

> On Wed, Sep 02, 2020 at 10:35:08AM +0900, Masami Hiramatsu wrote:
> > On Tue, 18 Aug 2020 15:57:43 +0200
> > Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> >
> > > Similar to how we disallow kprobes on any other dynamic text
> > > (ftrace/jump_label) also disallow kprobes on inline static_call()s.
> >
> > Looks good to me.
> >
> > Acked-by: Masami Hiramatsu <mhiramat@xxxxxxxxxx>
> >
> > BTW, here we already have 5 subsystems which reserves texts
> > (ftrace, alternatives, jump_label, static_call and kprobes.)
> >
> > Except for the kprobes and ftrace, we can generalize the reserved-text
> > code because those are section-based static address-areas (or lists).
>
> Doesn't ftrace also have a section where it lists all the mcount
> locations?

Is the data format in the section same as others?

>
> On top of that ftrace probably registers its trampolines.

Good point. I think trampolines are filtered by kernel_text() check.

>
> Do we support adding kprobes to BPF-JIT'ed code or should we blacklist
> them too?

No, we should blacklist it, because JIT'ed code will be used in
kprobes context. In that case, I think it is better to provide
partially execute non-JIT code and interrupt the interpreter.

Thank you,

--
Masami Hiramatsu <mhiramat@xxxxxxxxxx>