lkml.org 
[lkml]   [2020]   [May]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [patch V6 00/37] x86/entry: Rework leftovers and merge plan
On Mon, May 18, 2020 at 08:53:49PM +0200, Thomas Gleixner wrote:
> Peter Zijlstra <peterz@infradead.org> writes:
> > So on top of you entry-v8-full; I had to chase one of those
> > instrumentation_end() escapes an (extended) basic block chase (again!).
> >
> > +#ifdef CONFIG_DEBUG_ENTRY
>
> Why this? We lose the kprobes runtime protection that way.

Oh bugger indeed. I forgot about that :-(

I added the CONFIG_DEBUG_ENTRY dependency to
instrumentation_{begin,end}() because they now emit actual code, and I
figured we shouldn't bother 'production' kernels with all them extra
NOPs.

And then I figured (wrongly!) that since I have that, I might as well
add noinstr to is.

> > +/* Section for code which can't be instrumented at all */
> > +#define noinstr \
> > + noinline notrace __attribute((__section__(".noinstr.text")))
> > +
> > /* Begin/end of an instrumentation safe region */
> > -#define instrumentation_begin() ({ \
> > +#define instrumentation_begin() ({ \
> > asm volatile("%c0:\n\t" \
> > ".pushsection .discard.instr_begin\n\t" \
> > ".long %c0b - .\n\t" \
> > ".popsection\n\t" : : "i" (__COUNTER__));
>
> Nifty.

Yeah, took a bit of fiddling because objtool is a bit weird vs UD2, but
if you order it just right in the WARN thing it works :-)

You want a new delta without the noinstr thing on?

\
 
 \ /
  Last update: 2020-05-19 10:35    [W:0.121 / U:0.148 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site