diff options
-rw-r--r-- | sys/dev/isp/isp_freebsd.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/dev/isp/isp_freebsd.c b/sys/dev/isp/isp_freebsd.c index 8e5642f..89f45aa 100644 --- a/sys/dev/isp/isp_freebsd.c +++ b/sys/dev/isp/isp_freebsd.c @@ -146,12 +146,15 @@ isp_attach(ispsoftc_t *isp) isp->isp_osinfo.ehook.ich_func = isp_intr_enable; isp->isp_osinfo.ehook.ich_arg = isp; + ISP_UNLOCK(isp); if (config_intrhook_establish(&isp->isp_osinfo.ehook) != 0) { + ISP_LOCK(isp); cam_sim_free(sim, TRUE); isp_prt(isp, ISP_LOGERR, "could not establish interrupt enable hook"); return; } + ISP_LOCK(isp); if (xpt_bus_register(sim, primary) != CAM_SUCCESS) { cam_sim_free(sim, TRUE); |