mips: align stack in clone [BZ #28223]

Message ID 07cf2ef7f47070979089f880d91a0369c4efa978.camel@mengyan1223.wang
State Committed
Headers
Series mips: align stack in clone [BZ #28223] |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent
dj/TryBot-32bit fail Patch caused testsuite regressions

Commit Message

Xi Ruoyao Aug. 12, 2021, 4:58 p.m. UTC
  The MIPS O32 ABI requires 4 byte aligned stack, and the MIPS N64 and N32
ABI require 8 byte aligned stack.  Previously if the caller passed an
unaligned stack to clone the the child misbehaved.

Fixes bug 28223.
---
 sysdeps/unix/sysv/linux/mips/clone.S | 7 +++++++
 1 file changed, 7 insertions(+)
  

Comments

Joseph Myers Aug. 12, 2021, 5:20 p.m. UTC | #1
On Fri, 13 Aug 2021, Xi Ruoyao via Libc-alpha wrote:

> The MIPS O32 ABI requires 4 byte aligned stack, and the MIPS N64 and N32
> ABI require 8 byte aligned stack.  Previously if the caller passed an
> unaligned stack to clone the the child misbehaved.
> 
> Fixes bug 28223.

This patch is OK.
  
Xi Ruoyao Aug. 12, 2021, 5:27 p.m. UTC | #2
On Thu, 2021-08-12 at 17:20 +0000, Joseph Myers wrote:
> On Fri, 13 Aug 2021, Xi Ruoyao via Libc-alpha wrote:
> 
> > The MIPS O32 ABI requires 4 byte aligned stack, and the MIPS N64 and
> > N32
> > ABI require 8 byte aligned stack.  Previously if the caller passed
> > an
> > unaligned stack to clone the the child misbehaved.
> > 
> > Fixes bug 28223.
> 
> This patch is OK.
> 

I don't have git write access, waiting for a maintainer to push it.
  
Joseph Myers Aug. 12, 2021, 8:32 p.m. UTC | #3
On Fri, 13 Aug 2021, Xi Ruoyao via Libc-alpha wrote:

> On Thu, 2021-08-12 at 17:20 +0000, Joseph Myers wrote:
> > On Fri, 13 Aug 2021, Xi Ruoyao via Libc-alpha wrote:
> > 
> > > The MIPS O32 ABI requires 4 byte aligned stack, and the MIPS N64 and
> > > N32
> > > ABI require 8 byte aligned stack.  Previously if the caller passed
> > > an
> > > unaligned stack to clone the the child misbehaved.
> > > 
> > > Fixes bug 28223.
> > 
> > This patch is OK.
> 
> I don't have git write access, waiting for a maintainer to push it.

Now pushed.
  

Patch

diff --git a/sysdeps/unix/sysv/linux/mips/clone.S b/sysdeps/unix/sysv/linux/mips/clone.S
index 71d9dba8bd..9e5826aeba 100644
--- a/sysdeps/unix/sysv/linux/mips/clone.S
+++ b/sysdeps/unix/sysv/linux/mips/clone.S
@@ -55,6 +55,13 @@  NESTED(__clone,4*SZREG,sp)
 	.set		at
 #endif
 
+        /* Align stack to 4/8 bytes per the ABI */
+#if _MIPS_SIM == _ABIO32
+	li		t0,-4
+#else
+	li		t0,-8
+#endif
+	and		a1,a1,t0
 
 	/* Sanity check arguments.  */
 	li		v0,EINVAL