patch-2.4.0-test2 linux/arch/arm/kernel/process.c

Next file: linux/arch/arm/kernel/ptrace.c
Previous file: linux/arch/arm/kernel/leds-sa1100.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test1/linux/arch/arm/kernel/process.c linux/arch/arm/kernel/process.c
@@ -353,10 +353,12 @@
 	pid_t __ret;
 
 	__asm__ __volatile__(
-	"mov	r0, %1		@ kernel_thread sys_clone\n"
-"	mov	r1, #0\n"
-	__syscall(clone)"\n"
-"	mov	%0, r0"
+	"mov	r0, %1		@ kernel_thread sys_clone
+	mov	r1, #0
+	"__syscall(clone)"
+	teq	r0, #0		@ if we are the child
+	moveq	fp, #0		@ ensure that fp is zero
+	mov	%0, r0"
         : "=r" (__ret)
         : "Ir" (flags | CLONE_VM) : "r0", "r1");
 	if (__ret == 0)

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)