summaryrefslogtreecommitdiff
path: root/usr/src/uts/sun4v/io/qcn.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/sun4v/io/qcn.c')
-rw-r--r--usr/src/uts/sun4v/io/qcn.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/usr/src/uts/sun4v/io/qcn.c b/usr/src/uts/sun4v/io/qcn.c
index 3071edc673..50853cc010 100644
--- a/usr/src/uts/sun4v/io/qcn.c
+++ b/usr/src/uts/sun4v/io/qcn.c
@@ -288,6 +288,7 @@ qcn_remove_intrs(void)
(void) ddi_intr_remove_handler(qcn_state->qcn_htable[x]);
(void) ddi_intr_free(qcn_state->qcn_htable[x]);
}
+ kmem_free(qcn_state->qcn_htable, qcn_state->qcn_intr_size);
}
static void
@@ -366,6 +367,8 @@ qcn_attach(dev_info_t *dip, ddi_attach_cmd_t cmd)
if (ddi_intr_get_softint_pri(qcn_state->qcn_softint_hdl,
&soft_prip) != DDI_SUCCESS) {
cmn_err(CE_WARN, "qcn_attach: softint_pri failed\n");
+ (void) ddi_intr_remove_softint(
+ qcn_state->qcn_softint_hdl);
qcn_remove_intrs();
return (DDI_FAILURE);
}
@@ -844,7 +847,7 @@ qcn_trigger_softint(void)
mutex_exit(&qcn_state->qcn_softlock);
(void) ddi_intr_trigger_softint(
qcn_state->qcn_softint_hdl, NULL);
- } else
+ } else
mutex_exit(&qcn_state->qcn_softlock);
}
}