summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2007-10-18 05:53:03 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2007-10-18 05:53:03 +0000
commit72fc5a49fe02d2c1e51324bb423b249f7aef654c (patch)
treebb8311c06a37962b70a15683d5e036a69395dbbd /sys/dev
parent61ed6ee3d12786c43d897c0b38397e9be0dc5553 (diff)
scsi_done() must be splbio() protected... who did this work for??; ok dlg
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/i2o/iopsp.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/dev/i2o/iopsp.c b/sys/dev/i2o/iopsp.c
index 7168b940170..c53d8e11b3e 100644
--- a/sys/dev/i2o/iopsp.c
+++ b/sys/dev/i2o/iopsp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: iopsp.c,v 1.11 2007/10/04 19:32:03 gilles Exp $ */
+/* $OpenBSD: iopsp.c,v 1.12 2007/10/18 05:53:02 deraadt Exp $ */
/* $NetBSD$ */
/*-
@@ -433,7 +433,9 @@ iopsp_scsi_cmd(xs)
tid = IOPSP_TIDMAP(sc->sc_tidmap, link->target, link->lun);
if (tid == IOPSP_TID_ABSENT || tid == IOPSP_TID_INUSE) {
xs->error = XS_SELTIMEOUT;
+ s = splbio();
scsi_done(xs);
+ splx(s);
return (COMPLETE);
}
@@ -451,7 +453,9 @@ iopsp_scsi_cmd(xs)
} else
xs->error = XS_NOERROR;
+ s = splbio();
scsi_done(xs);
+ splx(s);
return (COMPLETE);
}
@@ -496,7 +500,9 @@ iopsp_scsi_cmd(xs)
if (error) {
xs->error = XS_DRIVER_STUFFUP;
iop_msg_free(iop, im);
+ s = splbio();
scsi_done(xs);
+ splx(s);
return (COMPLETE);
}
if ((xs->flags & SCSI_DATA_IN) == 0)
@@ -517,7 +523,9 @@ iopsp_scsi_cmd(xs)
iop_msg_unmap(iop, im);
iop_msg_free(iop, im);
xs->error = XS_DRIVER_STUFFUP;
+ s = splbio();
scsi_done(xs);
+ splx(s);
return (COMPLETE);
}