diff --git a/sys/kern/kern_mutex.c b/sys/kern/kern_mutex.c --- a/sys/kern/kern_mutex.c +++ b/sys/kern/kern_mutex.c @@ -915,7 +915,13 @@ break; continue; } - MPASS(v != tid); + /* if two timers lock, v and tid both are clock tid, + * so they are equal */ + if (v == tid) { + m->mtx_recurse++; + MPASS(m == td->td_lock); + break; + } lock_profile_obtain_lock_failed(&m->lock_object, true, &contested, &waittime); /* Give interrupts a chance while we spin. */