summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOtto Moerbeek <otto@cvs.openbsd.org>2007-10-18 20:28:27 +0000
committerOtto Moerbeek <otto@cvs.openbsd.org>2007-10-18 20:28:27 +0000
commit42fbd11838551396cdbdfa15bdc1c568b83b4823 (patch)
tree265045e0f1001e740cc70f778d04b62100220705
parent4d3f8b77be103329c722bf0c1f8d5d6e7518a9a6 (diff)
avoid splassert, caused by the fact that iha_main() is called
unprotected by iha_exec_scb(). With help and ok miod@
-rw-r--r--sys/dev/ic/iha.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/ic/iha.c b/sys/dev/ic/iha.c
index 50d01b3fd12..fb04412ab47 100644
--- a/sys/dev/ic/iha.c
+++ b/sys/dev/ic/iha.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: iha.c,v 1.26 2007/04/10 17:47:55 miod Exp $ */
+/* $OpenBSD: iha.c,v 1.27 2007/10/18 20:28:26 otto Exp $ */
/*-------------------------------------------------------------------------
*
* Device driver for the INI-9XXXU/UW or INIC-940/950 PCI SCSI Controller.
@@ -2482,6 +2482,7 @@ iha_done_scb(sc, pScb)
{
struct scsi_sense_data *s1, *s2;
struct scsi_xfer *xs = pScb->SCB_Xs;
+ int s;
if (xs != NULL) {
timeout_del(&xs->stimeout);
@@ -2562,7 +2563,9 @@ iha_done_scb(sc, pScb)
}
xs->flags |= ITSDONE;
+ s = splbio();
scsi_done(xs);
+ splx(s);
}
iha_append_free_scb(sc, pScb);