Messages in this thread | | | Date | Mon, 6 Apr 2020 09:16:20 -0500 | From | Josh Poimboeuf <> | Subject | Re: [PATCH 4/7] objtool: Add support for return trampoline call |
| |
On Sat, Apr 04, 2020 at 05:51:26PM +0200, Peter Zijlstra wrote: > On Sat, Apr 04, 2020 at 09:22:32AM -0500, Josh Poimboeuf wrote: > > On Sat, Apr 04, 2020 at 03:32:18PM +0200, Peter Zijlstra wrote: > > > On Fri, Apr 03, 2020 at 05:46:20PM +0200, Peter Zijlstra wrote: > > > > On Fri, Apr 03, 2020 at 10:17:57AM -0500, Josh Poimboeuf wrote: > > > > > Peter, I think my previous idea for UNWIND_HINT_ADJUST stack_add=8 would > > > > > work here? > > > > > > > > Yes, it would. > > > > > > Sorry, I have reconsidered. While it will shut up objtool, it will not > > > 'work'. That is, the ORC data generated will not correctly unwind. > > > > > > I'll try and write a longer email tonight. > > > > Right, that's what I've been trying to say. The ORC data will be > > non-deterministic unless we unroll the loop. Or did you mean something > > else? > > The below should result in deterministic code. > > diff --git a/arch/x86/include/asm/nospec-branch.h b/arch/x86/include/asm/nospec-branch.h > index 07e95dcb40ad..109ee65f4a11 100644 > --- a/arch/x86/include/asm/nospec-branch.h > +++ b/arch/x86/include/asm/nospec-branch.h > @@ -59,8 +59,8 @@ > jmp 775b; \ > 774: \ > dec reg; \ > - jnz 771b; \ > - add $(BITS_PER_LONG/8) * nr, sp; > + add $(BITS_PER_LONG/8) * $2, sp; \ > + jnz 771b; > > #ifdef __ASSEMBLY__
That should work, though we should make sure it doesn't break the RSB clearing -- I'm pretty sure it wouldn't, but you never know...
-- Josh
| |