aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/dpt
diff options
context:
space:
mode:
authorMatthew N. Dodd <mdodd@FreeBSD.org>2004-01-17 05:57:52 +0000
committerMatthew N. Dodd <mdodd@FreeBSD.org>2004-01-17 05:57:52 +0000
commitbaa039868ef61aa03e3e49c9d929ae9802326ca9 (patch)
treefb48da59cf860ec5f9e0c9f2c37467c1e1cab8be /sys/dev/dpt
parent2e53e513a8bf75a655bccd0aa1d21fb1267bdbf1 (diff)
Notes
Diffstat (limited to 'sys/dev/dpt')
-rw-r--r--sys/dev/dpt/dpt_scsi.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/dev/dpt/dpt_scsi.c b/sys/dev/dpt/dpt_scsi.c
index 0b2c726c1358..4ae2cc8fd52f 100644
--- a/sys/dev/dpt/dpt_scsi.c
+++ b/sys/dev/dpt/dpt_scsi.c
@@ -1553,8 +1553,19 @@ dpt_attach(dpt_softc_t *dpt)
dpt->sims[i] = cam_sim_alloc(dpt_action, dpt_poll, "dpt",
dpt, dpt->unit, /*untagged*/2,
/*tagged*/dpt->max_dccbs, devq);
+ if (dpt->sims[i] == NULL) {
+ if (i == 0)
+ cam_simq_free(devq);
+ else
+ printf( "%s(): Unable to attach bus %d "
+ "due to resource shortage\n",
+ __func__, i);
+ break;
+ }
+
if (xpt_bus_register(dpt->sims[i], i) != CAM_SUCCESS) {
cam_sim_free(dpt->sims[i], /*free_devq*/i == 0);
+ dpt->sims[i] = NULL;
break;
}
@@ -1564,6 +1575,7 @@ dpt_attach(dpt_softc_t *dpt)
CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
xpt_bus_deregister(cam_sim_path(dpt->sims[i]));
cam_sim_free(dpt->sims[i], /*free_devq*/i == 0);
+ dpt->sims[i] = NULL;
break;
}