commit | e7dccdf683616347a8fa65aba02ee3e12babbcf4 | [log] [tgz] |
---|---|---|
author | Elliott Hughes <enh@google.com> | Tue May 27 15:47:32 2014 -0700 |
committer | Elliott Hughes <enh@google.com> | Tue May 27 15:49:51 2014 -0700 |
tree | 253b37e25ec6dda5398244727b8872f6043d6c97 | |
parent | 1c4d83012fea4e6d011215bef1665cf68d2ac47c [diff] [blame] |
Clear the return address register in __bionic_clone. The unwinder will end up on the parent thread's stack if the return address register is not cleared. Bug: 14270816 Bug: 15195760 Change-Id: Iebcdf5cc881cad245643bb193760de35eb7f8b19
diff --git a/libc/arch-mips/bionic/__bionic_clone.S b/libc/arch-mips/bionic/__bionic_clone.S index 11d596b..7b138ae 100644 --- a/libc/arch-mips/bionic/__bionic_clone.S +++ b/libc/arch-mips/bionic/__bionic_clone.S
@@ -54,6 +54,9 @@ j ra .L__thread_start_bc: + # Clear return address in child so we don't unwind further. + li ra,0 + lw a0,0(sp) # fn lw a1,4(sp) # arg