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. * Copyright (c) 2007, 2008 Antti Kantee. All Rights Reserved.
@ -29,7 +29,7 @@
*/ */
#include <sys/cdefs.h> #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/param.h>
#include <sys/kmem.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)); rumpuser_cv_wait(RUMPCV(cv), RUMPMTX(mtx));
} }
LOCKED(mtx, false);
/* /*
* Check for QEXIT. if so, we need to wait here until we * Check for QEXIT. if so, we need to wait here until we
* are allowed to exit. * are allowed to exit.
@ -330,8 +332,6 @@ docvwait(kcondvar_t *cv, kmutex_t *mtx, struct timespec *ts)
} }
l->l_private = NULL; l->l_private = NULL;
LOCKED(mtx, false);
return rv; return rv;
} }