Re: Build errors in v4.4-stable-queue (i386)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2018-01-19 at 10:34 +0100, David Woodhouse wrote:
> On Thu, 2018-01-18 at 19:10 +0100, Greg Kroah-Hartman wrote:
> > 
> > On Thu, Jan 18, 2018 at 08:41:58AM -0800, Guenter Roeck wrote:
> > > 
> > > 
> > > Building i386:defconfig ... failed
> > > --------------
> > > Error log:
> > > arch/x86/entry/entry_32.S: Assembler messages:
> > > arch/x86/entry/entry_32.S:230: Error: too many memory references
> > > for `mov'
> > Ick, no good, 0-day has pointed this out as well.
> > 
> > Razvan and David, any ideas?
> 
> 	CALL_NOSPEC PT_EBX(%esp)
> 
> That turns into a retpoline with
> 
>         mov PT_EBX(%esp), 0(%esp)
> 
> Which is doubly wrong, because not only can't you have two memory
> operands to a 'mov' but %esp has already *moved* by the time we get
> here so we'd be using the wrong source anyway.
> 
> We need to pick a victim register and load PT_EBX(%esp) into it, then
> CALL_NOSPEC %\reg.
> 
> We'll fix this and also the RSP-clobbering in context switch that you
> just sent a "fails to apply" message for.

Try this. Not even build tested. I think we can have %edx here, as it
would be the second argument to the kthread function, and clobbered by
it too.

Signed-off-by-if-it-works: David Woodhouse <dwmw@xxxxxxxxxxxx>

--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -227,7 +227,8 @@ ENTRY(ret_from_kernel_thread)
        pushl   $0x0202                         # Reset kernel eflags
        popfl
        movl    PT_EBP(%esp), %eax
-       CALL_NOSPEC PT_EBX(%esp)
+       movl    PT_EBX(%esp), %edx
+       CALL_NOSPEC %edx
        movl    $0, PT_EAX(%esp)
 

Attachment: smime.p7s
Description: S/MIME cryptographic signature


[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]