Re: [PATCH 5/6] objtool: Add UACCESS validation

From: Peter Zijlstra
Date: Mon Feb 25 2019 - 12:15:46 EST


On Mon, Feb 25, 2019 at 05:12:34PM +0100, Peter Zijlstra wrote:
> On Mon, Feb 25, 2019 at 07:53:01AM -0800, Andy Lutomirski wrote:
> > On Mon, Feb 25, 2019 at 4:53 AM Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
>
> > > +#define UACCESS_SAFE(func) \
> > > + asm (".pushsection .discard.uaccess_safe_strtab, \"S\", @3\n\t" \
> > > + "999: .ascii \"" #func "\"\n\t" \
> > > + " .byte 0\n\t" \
> > > + ".popsection\n\t" \
> > > + ".pushsection .discard.uaccess_safe\n\t" \
> > > + ".long 999b - .\n\t" \
> > > + ".popsection")
> >
> > Minor nit: using big numbers like 999: like this always bugs me. It
> > relies on there not being a macro nested inside or outside this that
> > uses the same number. My general preference is to do something like
> > .Ldescription_\@ instead.
> >
> > Otherwise this looks conceptually good :)
>
> I seem to remember here being an issue with the \@ thing. Notably we're
> not using it in nospsec-branch.h.
>
> I'll see if I can dig up why we decided not to use it there.

Ah, so the thing we need for inline-asm is %=, but Linus didn't like it:

https://lkml.kernel.org/r/20180111175626.GJ6176@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Also, I think at the time we didn't use it because backporting efforts.

I can't really find what happened between:

https://lkml.kernel.org/r/1515508997-6154-2-git-send-email-dwmw@xxxxxxxxxxxx

and

https://lkml.kernel.org/r/1515707194-20531-4-git-send-email-dwmw@xxxxxxxxxxxx

But the %= thing went away.