]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: clear upper half of sec in ARM walltime
authorMichael Pratt <mpratt@google.com>
Wed, 3 Nov 2021 20:28:51 +0000 (16:28 -0400)
committerMichael Pratt <mpratt@google.com>
Thu, 4 Nov 2021 17:07:48 +0000 (17:07 +0000)
https://golang.org/cl/246763 accidentally changed this to assign the old
value of vdsoPC to the upper half of sec as that is the last value in
R1.

The old value of vdsoPC is usually zero, so this typically works.
However, the reentrant case will have a non-zero value, resulting in a
bogus returned time. I am unsure if walltime is reachable from a signal
handler, so this may never occur.

Change-Id: I8562d6ec2a845fcffee9618d994b8ea57fbd199e
Reviewed-on: https://go-review.googlesource.com/c/go/+/361159
Trust: Michael Pratt <mpratt@google.com>
Run-TryBot: Michael Pratt <mpratt@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
src/runtime/sys_linux_arm.s

index 3f30da7b54013cadc7761123ef5f6886f0789a85..65935de99f66f4c617d47c75323f23cfb4a045de 100644 (file)
@@ -360,6 +360,7 @@ finish:
        MOVW    R1, m_vdsoPC(R5)
 
        MOVW    R0, sec_lo+0(FP)
+       MOVW    $0, R1
        MOVW    R1, sec_hi+4(FP)
        MOVW    R2, nsec+8(FP)
        RET