diff options
Diffstat (limited to 'sys/kern/subr_smr.c')
-rw-r--r-- | sys/kern/subr_smr.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/kern/subr_smr.c b/sys/kern/subr_smr.c index bbbc5711c499..1ea7e5d871f0 100644 --- a/sys/kern/subr_smr.c +++ b/sys/kern/subr_smr.c @@ -193,8 +193,7 @@ smr_advance(smr_t smr) /* * It is illegal to enter while in an smr section. */ - KASSERT(curthread->td_critnest == 0, - ("smr_advance: Not allowed in a critical section.")); + SMR_ASSERT_NOT_ENTERED(smr); /* * Modifications not done in a smr section need to be visible @@ -237,6 +236,8 @@ smr_advance_deferred(smr_t smr, int limit) smr_seq_t goal; smr_t csmr; + SMR_ASSERT_NOT_ENTERED(smr); + critical_enter(); csmr = zpcpu_get(smr); if (++csmr->c_deferred >= limit) { @@ -275,8 +276,8 @@ smr_poll(smr_t smr, smr_seq_t goal, bool wait) /* * It is illegal to enter while in an smr section. */ - KASSERT(!wait || curthread->td_critnest == 0, - ("smr_poll: Blocking not allowed in a critical section.")); + KASSERT(!wait || !SMR_ENTERED(smr), + ("smr_poll: Blocking not allowed in a SMR section.")); /* * Use a critical section so that we can avoid ABA races |