diff --git a/src/raw_rwlock.rs b/src/raw_rwlock.rs index 2f3b5882..14432e3a 100644 --- a/src/raw_rwlock.rs +++ b/src/raw_rwlock.rs @@ -870,7 +870,10 @@ impl RawRwLock { #[cold] fn upgrade_slow(&self, timeout: Option) -> bool { - self.wait_for_readers(timeout, ONE_READER | UPGRADABLE_BIT) + self.deadlock_release(); + let result = self.wait_for_readers(timeout, ONE_READER | UPGRADABLE_BIT); + self.deadlock_acquire(); + result } #[cold]