Mark cv_wait mutex as locked before doing any further dances.

Fixes a LOCKDEBUG panic in case the uncommon condition is hit.
This commit is contained in:
pooka 2011-03-09 18:15:39 +00:00
parent 6dcf83c49c
commit 49bc93eb11
1 changed files with 4 additions and 4 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: locks.c,v 1.51 2011/03/08 12:39:29 pooka Exp $ */
/* $NetBSD: locks.c,v 1.52 2011/03/09 18:15:39 pooka Exp $ */
/*
* Copyright (c) 2007, 2008 Antti Kantee. All Rights Reserved.
@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: locks.c,v 1.51 2011/03/08 12:39:29 pooka Exp $");
__KERNEL_RCSID(0, "$NetBSD: locks.c,v 1.52 2011/03/09 18:15:39 pooka Exp $");
#include <sys/param.h>
#include <sys/kmem.h>
@ -305,6 +305,8 @@ docvwait(kcondvar_t *cv, kmutex_t *mtx, struct timespec *ts)
rumpuser_cv_wait(RUMPCV(cv), RUMPMTX(mtx));
}
LOCKED(mtx, false);
/*
* Check for QEXIT. if so, we need to wait here until we
* are allowed to exit.
@ -330,8 +332,6 @@ docvwait(kcondvar_t *cv, kmutex_t *mtx, struct timespec *ts)
}
l->l_private = NULL;
LOCKED(mtx, false);
return rv;
}