]> Cypherpunks repositories - gostls13.git/commit
[release-branch.go1.12] runtime: ensure memmove write pointer atomically on ARM64
authorCherry Zhang <cherryyz@google.com>
Fri, 27 Dec 2019 17:02:00 +0000 (12:02 -0500)
committerAlexander Rakoczy <alex@golang.org>
Wed, 8 Jan 2020 22:22:22 +0000 (22:22 +0000)
commitae78084ae4db4f7728e1615c95dfd91c175c906d
tree28423e6a3f7ebf0a99f8808c3b5ab7864aaacd13
parentc5af2aa0037b39db801154451a3f70982751d988
[release-branch.go1.12] runtime: ensure memmove write pointer atomically on ARM64

If a pointer write is not atomic, if the GC is running
concurrently, it may observe a partially updated pointer, which
may point to unallocated or already dead memory. Most pointer
writes, like the store instructions generated by the compiler,
are already atomic. But we still need to be careful in places
like memmove. In memmove, we don't know which bits are pointers
(or too expensive to query), so we ensure that all aligned
pointer-sized units are written atomically.

Fixes #36367.
Updates #36101.

Change-Id: I1b3ca24c6b1ac8a8aaf9ee470115e9a89ec1b00b
Reviewed-on: https://go-review.googlesource.com/c/go/+/212626
Reviewed-by: Austin Clements <austin@google.com>
(cherry picked from commit ffbc02761abb47106ce88e09290a31513b5f6c8a)
Reviewed-on: https://go-review.googlesource.com/c/go/+/213684
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/runtime/memmove_arm64.s