aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/time.go
diff options
context:
space:
mode:
authorDmitri Shuralyov <dmitshur@golang.org>2021-02-05 19:53:15 +0000
committerDmitri Shuralyov <dmitshur@golang.org>2021-02-05 19:53:15 +0000
commit2a0dd053ecfa528adc0f763a546519a7257ed8cd (patch)
tree11af29257d714309eae879573ff3b7f6000e227c /src/runtime/time.go
parent79ea7a16d7e3bc36e98a4b7afd997bb315e80a1c (diff)
parentfa6752a5370735b8c2404d6de5191f2eea67130f (diff)
downloadgo-2a0dd053ecfa528adc0f763a546519a7257ed8cd.tar.gz
go-2a0dd053ecfa528adc0f763a546519a7257ed8cd.zip
[dev.boringcrypto.go1.15] all: merge go1.15.8 into dev.boringcrypto.go1.15
Change-Id: Ife009bce76e8aecb2255c69dbb5cadb61c22d2c3
Diffstat (limited to 'src/runtime/time.go')
-rw-r--r--src/runtime/time.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/runtime/time.go b/src/runtime/time.go
index fdb5066b24..ec3eae9cca 100644
--- a/src/runtime/time.go
+++ b/src/runtime/time.go
@@ -594,8 +594,14 @@ func moveTimers(pp *p, timers []*timer) {
for {
switch s := atomic.Load(&t.status); s {
case timerWaiting:
+ if !atomic.Cas(&t.status, s, timerMoving) {
+ continue
+ }
t.pp = 0
doaddtimer(pp, t)
+ if !atomic.Cas(&t.status, timerMoving, timerWaiting) {
+ badTimer()
+ }
break loop
case timerModifiedEarlier, timerModifiedLater:
if !atomic.Cas(&t.status, s, timerMoving) {