94084c
commit 7af07fe795f43e53d31be1c6f9adba7e05f87b0b
94084c
Author: Xi Ruoyao <xry111@mengyan1223.wang>
94084c
Date:   Thu Aug 12 20:31:59 2021 +0000
94084c
94084c
    mips: align stack in clone [BZ #28223]
94084c
    
94084c
    The MIPS O32 ABI requires 4 byte aligned stack, and the MIPS N64 and N32
94084c
    ABI require 8 byte aligned stack.  Previously if the caller passed an
94084c
    unaligned stack to clone the the child misbehaved.
94084c
    
94084c
    Fixes bug 28223.
94084c
    
94084c
    (cherry picked from commit 1f51cd9a860ee45eee8a56fb2ba925267a2a7bfe)
94084c
94084c
diff --git a/sysdeps/unix/sysv/linux/mips/clone.S b/sysdeps/unix/sysv/linux/mips/clone.S
94084c
index 71d9dba8bd9e8f9e..43a5ad3a400d9504 100644
94084c
--- a/sysdeps/unix/sysv/linux/mips/clone.S
94084c
+++ b/sysdeps/unix/sysv/linux/mips/clone.S
94084c
@@ -55,6 +55,13 @@ NESTED(__clone,4*SZREG,sp)
94084c
 	.set		at
94084c
 #endif
94084c
 
94084c
+	/* Align stack to 4/8 bytes per the ABI.  */
94084c
+#if _MIPS_SIM == _ABIO32
94084c
+	li		t0,-4
94084c
+#else
94084c
+	li		t0,-8
94084c
+#endif
94084c
+	and		a1,a1,t0
94084c
 
94084c
 	/* Sanity check arguments.  */
94084c
 	li		v0,EINVAL