View | Details | Raw Unified | Return to bug 198014 | Differences between
and this patch

Collapse All | Expand All

(-)b/sys/kern/kern_umtx.c (+11 lines)
Lines 1741-1746 do_lock_pi(struct thread *td, struct umutex *m, uint32_t flags, Link Here
1741
				error = umtx_pi_claim(pi, td);
1741
				error = umtx_pi_claim(pi, td);
1742
				umtxq_unbusy(&uq->uq_key);
1742
				umtxq_unbusy(&uq->uq_key);
1743
				umtxq_unlock(&uq->uq_key);
1743
				umtxq_unlock(&uq->uq_key);
1744
				if (error) {
1745
					/*
1746
					 * Since we're going to return an
1747
					 * error, restore the m_owner to its
1748
					 * previous, unowned state to avoid
1749
					 * compounding the problem.
1750
					 */
1751
					(void) casuword32(&m->m_owner,
1752
						id | UMUTEX_CONTESTED,
1753
						UMUTEX_CONTESTED);
1754
				}
1744
				break;
1755
				break;
1745
			}
1756
			}
1746
1757

Return to bug 198014