]> Cypherpunks repositories - gostls13.git/commit
syscall, runtime/internal/syscall: zero r2 before mips linux syscalls
authorRongrong <rongrong@oss.cipunited.com>
Mon, 21 Nov 2022 06:05:40 +0000 (14:05 +0800)
committerMeng Zhuo <mzh@golangcn.org>
Thu, 24 Nov 2022 04:12:23 +0000 (04:12 +0000)
commit2c7c98c3ad719aa9d6d2594827a6894ff9950042
treeccf0377dd82c0a1e3e953b23c3c515fb73387a80
parent7a9ce7465575ac1bfda3aa44b95712cdd5dc47cf
syscall, runtime/internal/syscall: zero r2 before mips linux syscalls

All mips variant perform syscalls similarly. R2 (v0) holds r1 and R3
(v1) holds r2 of a syscall. The latter is only used by 2-ret syscalls.
A 1-ret syscall would not touch R3 but keeps it as is, making r2 be a
random value. Always reset it to 0 before SYSCALL to fix the issue.

Fixes #56426

Change-Id: Ie49965c0c3c224c4a895703ac659205cd040ff56
Reviewed-on: https://go-review.googlesource.com/c/go/+/452975
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Meng Zhuo <mzh@golangcn.org>
Reviewed-by: Austin Clements <austin@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Meng Zhuo <mzh@golangcn.org>
src/runtime/internal/syscall/asm_linux_mips64x.s
src/runtime/internal/syscall/asm_linux_mipsx.s
src/syscall/asm_linux_mips64x.s
src/syscall/asm_linux_mipsx.s