summaryrefslogtreecommitdiff
path: root/sys/dev/raidframe/rf_diskqueue.c
diff options
context:
space:
mode:
authoroster <oster@NetBSD.org>2004-03-23 02:34:10 +0000
committeroster <oster@NetBSD.org>2004-03-23 02:34:10 +0000
commitbceb7a27782f5ebdbaaffc7f2821845233aefe84 (patch)
treea472801f1011f4e2ab9c33e3d9021ffff186a223 /sys/dev/raidframe/rf_diskqueue.c
parent769814bf89649d8b4f9bd07b36114c8e6e8c446e (diff)
bufpool must be accessed at splbio().
Diffstat (limited to 'sys/dev/raidframe/rf_diskqueue.c')
-rw-r--r--sys/dev/raidframe/rf_diskqueue.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/dev/raidframe/rf_diskqueue.c b/sys/dev/raidframe/rf_diskqueue.c
index bba57fb9df3..7f24c6c9650 100644
--- a/sys/dev/raidframe/rf_diskqueue.c
+++ b/sys/dev/raidframe/rf_diskqueue.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_diskqueue.c,v 1.34 2004/03/21 06:16:49 oster Exp $ */
+/* $NetBSD: rf_diskqueue.c,v 1.35 2004/03/23 02:34:10 oster Exp $ */
/*
* Copyright (c) 1995 Carnegie-Mellon University.
* All rights reserved.
@@ -66,7 +66,7 @@
****************************************************************************/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_diskqueue.c,v 1.34 2004/03/21 06:16:49 oster Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_diskqueue.c,v 1.35 2004/03/23 02:34:10 oster Exp $");
#include <dev/raidframe/raidframevar.h>
@@ -449,12 +449,15 @@ rf_CreateDiskQueueData(RF_IoType_t typ, RF_SectorNum_t ssect,
RF_DiskQueueDataFlags_t flags, void *kb_proc)
{
RF_DiskQueueData_t *p;
+ int s;
p = pool_get(&rf_pools.dqd, PR_WAITOK);
memset(p, 0, sizeof(RF_DiskQueueData_t));
+ /* Need to be at splbio to access bufpool! */
+ s = splbio();
p->bp = pool_get(&bufpool, PR_NOWAIT); /* XXX: make up our minds here.
WAITOK, or NOWAIT?? */
-
+ splx(s);
if (p->bp == NULL) {
/* no memory for the buffer!?!? */
pool_put(&rf_pools.dqd, p);