diff options
| author | oster <oster@NetBSD.org> | 2004-03-23 02:34:10 +0000 |
|---|---|---|
| committer | oster <oster@NetBSD.org> | 2004-03-23 02:34:10 +0000 |
| commit | bceb7a27782f5ebdbaaffc7f2821845233aefe84 (patch) | |
| tree | a472801f1011f4e2ab9c33e3d9021ffff186a223 /sys/dev/raidframe/rf_diskqueue.c | |
| parent | 769814bf89649d8b4f9bd07b36114c8e6e8c446e (diff) | |
bufpool must be accessed at splbio().
Diffstat (limited to 'sys/dev/raidframe/rf_diskqueue.c')
| -rw-r--r-- | sys/dev/raidframe/rf_diskqueue.c | 9 |
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); |
