Page MenuHomeFreeBSD

D49031.1789653583.diff
No OneTemporary

Size
712 B
Referenced Files
None
Subscribers
None

D49031.1789653583.diff

diff --git a/sys/kern/kern_umtx.c b/sys/kern/kern_umtx.c
--- a/sys/kern/kern_umtx.c
+++ b/sys/kern/kern_umtx.c
@@ -2616,6 +2616,10 @@
}
} else if (owner == UMUTEX_RB_NOTRECOV) {
error = ENOTRECOVERABLE;
+ } else if (owner == UMUTEX_CONTESTED) {
+ /* Spurious failure, retry. */
+ umtxq_unbusy_unlocked(&uq->uq_key);
+ continue;
}
if (try != 0)
@@ -2834,6 +2838,14 @@
if (error != 0)
break;
+ /*
+ * We may have gotten a spurious failure.
+ */
+ if (owner == UMUTEX_CONTESTED) {
+ umtxq_unbusy_unlocked(&uq->uq_key);
+ continue;
+ }
+
/*
* We set the contested bit, sleep. Otherwise the lock changed
* and we need to retry or we lost a race to the thread

File Metadata

Mime Type
text/plain
Expires
Thu, Sep 17, 1:59 PM (15 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29731968
Default Alt Text
D49031.1789653583.diff (712 B)

Event Timeline