Fix assertion, &uc->uc_busy is never zero, the intent is to test the
uc_busy value, and not its address [1]. Remove the single use of the macro, write KASSERT() explicitely in the code of umtxq_sleep_pi(). Submitted by: Eric van Gyzen <eric@vangyzen.net> [1] MFC after: 1 week
This commit is contained in:
parent
50d75c5b57
commit
416be7a1c6
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=274478
@ -169,7 +169,6 @@ struct umtxq_chain {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define UMTXQ_LOCKED_ASSERT(uc) mtx_assert(&(uc)->uc_lock, MA_OWNED)
|
#define UMTXQ_LOCKED_ASSERT(uc) mtx_assert(&(uc)->uc_lock, MA_OWNED)
|
||||||
#define UMTXQ_BUSY_ASSERT(uc) KASSERT(&(uc)->uc_busy, ("umtx chain is not busy"))
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Don't propagate time-sharing priority, there is a security reason,
|
* Don't propagate time-sharing priority, there is a security reason,
|
||||||
@ -1478,7 +1477,7 @@ umtxq_sleep_pi(struct umtx_q *uq, struct umtx_pi *pi,
|
|||||||
KASSERT(td == curthread, ("inconsistent uq_thread"));
|
KASSERT(td == curthread, ("inconsistent uq_thread"));
|
||||||
uc = umtxq_getchain(&uq->uq_key);
|
uc = umtxq_getchain(&uq->uq_key);
|
||||||
UMTXQ_LOCKED_ASSERT(uc);
|
UMTXQ_LOCKED_ASSERT(uc);
|
||||||
UMTXQ_BUSY_ASSERT(uc);
|
KASSERT(uc->uc_busy != 0, ("umtx chain is not busy"));
|
||||||
umtxq_insert(uq);
|
umtxq_insert(uq);
|
||||||
mtx_lock_spin(&umtx_lock);
|
mtx_lock_spin(&umtx_lock);
|
||||||
if (pi->pi_owner == NULL) {
|
if (pi->pi_owner == NULL) {
|
||||||
|
Loading…
Reference in New Issue
Block a user