mirror of
https://github.com/golang/go
synced 2024-11-19 02:14:43 -07:00
runtime: check for nil g in msancall() on arm64
The current msanwrite() segfaults during libpreinit when built with -msan on arm64. The cause is msancall() in runtime/msan_arm64.s called by msanwrite() assumes that it is always called with a valid g, leading to a segfult. This CL adds a check for nil g in msancall(). Fixes #34338 Change-Id: If4ad7e37556cd1d99346c1a7b4852651d1e4e4aa Reviewed-on: https://go-review.googlesource.com/c/go/+/196157 Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
bcf6f9fd4c
commit
827584e2f3
@ -47,9 +47,10 @@ TEXT runtime·msanfree(SB), NOSPLIT, $0-16
|
|||||||
|
|
||||||
// Switches SP to g0 stack and calls (FARG). Arguments already set.
|
// Switches SP to g0 stack and calls (FARG). Arguments already set.
|
||||||
TEXT msancall<>(SB), NOSPLIT, $0-0
|
TEXT msancall<>(SB), NOSPLIT, $0-0
|
||||||
|
MOVD RSP, R19 // callee-saved
|
||||||
|
CBZ g, g0stack // no g, still on a system stack
|
||||||
MOVD g_m(g), R10
|
MOVD g_m(g), R10
|
||||||
MOVD m_g0(R10), R11
|
MOVD m_g0(R10), R11
|
||||||
MOVD RSP, R19 // callee-saved
|
|
||||||
CMP R11, g
|
CMP R11, g
|
||||||
BEQ g0stack
|
BEQ g0stack
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user