Hold the interlock when calling cv_broadcast as per condvar(9)

This commit is contained in:
skrll 2016-12-26 08:21:09 +00:00
parent fb73e3c1d6
commit 244ca08653

View File

@ -1,4 +1,4 @@
/* $NetBSD: puffs_msgif.c,v 1.99 2016/07/07 06:55:42 msaitoh Exp $ */
/* $NetBSD: puffs_msgif.c,v 1.100 2016/12/26 08:21:09 skrll Exp $ */
/*
* Copyright (c) 2005, 2006, 2007 Antti Kantee. All Rights Reserved.
@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: puffs_msgif.c,v 1.99 2016/07/07 06:55:42 msaitoh Exp $");
__KERNEL_RCSID(0, "$NetBSD: puffs_msgif.c,v 1.100 2016/12/26 08:21:09 skrll Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@ -429,9 +429,9 @@ puffs_msg_enqueue(struct puffs_mount *pmp, struct puffs_msgpark *park)
park->park_flags |= PARKFLAG_ONQUEUE1;
pmp->pmp_msg_touser_count++;
park->park_refcount++;
mutex_exit(&pmp->pmp_lock);
cv_broadcast(&pmp->pmp_msg_waiter_cv);
mutex_exit(&pmp->pmp_lock);
putter_notify(pmp->pmp_pi);
DPRINTF(("touser: req %" PRIu64 ", preq: %p, park: %p, "