summaryrefslogtreecommitdiffstats
path: root/sys/dev/advansys
diff options
context:
space:
mode:
authornyan <nyan@FreeBSD.org>2000-05-23 10:12:42 +0000
committernyan <nyan@FreeBSD.org>2000-05-23 10:12:42 +0000
commit4ac6f8ed3b8e2c2b64d101863d4b0f266093c26d (patch)
tree0eb44776e9c72f6c19c120d805d7fca0a645398e /sys/dev/advansys
parent0385b0735e06e408df4e7d9bab69242d3ddaf765 (diff)
downloadFreeBSD-src-4ac6f8ed3b8e2c2b64d101863d4b0f266093c26d.zip
FreeBSD-src-4ac6f8ed3b8e2c2b64d101863d4b0f266093c26d.tar.gz
Fixed return value of adv_attach function.
Submitted by: Oleg Sharoiko <os@rsu.ru>
Diffstat (limited to 'sys/dev/advansys')
-rw-r--r--sys/dev/advansys/advansys.c35
1 files changed, 18 insertions, 17 deletions
diff --git a/sys/dev/advansys/advansys.c b/sys/dev/advansys/advansys.c
index 62c4790..2ac03f2 100644
--- a/sys/dev/advansys/advansys.c
+++ b/sys/dev/advansys/advansys.c
@@ -1302,7 +1302,7 @@ adv_attach(adv)
M_DEVBUF, M_NOWAIT);
if (adv->ccb_infos == NULL)
- goto error_exit;
+ return (ENOMEM);
adv->init_level++;
@@ -1344,7 +1344,7 @@ adv_attach(adv)
/*maxsegsz*/BUS_SPACE_MAXSIZE_32BIT,
/*flags*/BUS_DMA_ALLOCNOW,
&adv->buffer_dmat) != 0) {
- goto error_exit;
+ return (ENXIO);
}
adv->init_level++;
@@ -1357,7 +1357,7 @@ adv_attach(adv)
/*nsegments*/1,
/*maxsegsz*/BUS_SPACE_MAXSIZE_32BIT,
/*flags*/0, &adv->sense_dmat) != 0) {
- goto error_exit;
+ return (ENXIO);
}
adv->init_level++;
@@ -1365,7 +1365,7 @@ adv_attach(adv)
/* Allocation for our sense buffers */
if (bus_dmamem_alloc(adv->sense_dmat, (void **)&adv->sense_buffers,
BUS_DMA_NOWAIT, &adv->sense_dmamap) != 0) {
- goto error_exit;
+ return (ENOMEM);
}
adv->init_level++;
@@ -1384,7 +1384,7 @@ adv_attach(adv)
if (adv_start_chip(adv) != 1) {
printf("adv%d: Unable to start on board processor. Aborting.\n",
adv->unit);
- return (0);
+ return (ENXIO);
}
/*
@@ -1392,7 +1392,7 @@ adv_attach(adv)
*/
devq = cam_simq_alloc(adv->max_openings);
if (devq == NULL)
- return (0);
+ return (ENOMEM);
/*
* Construct our SIM entry.
@@ -1400,7 +1400,7 @@ adv_attach(adv)
adv->sim = cam_sim_alloc(adv_action, adv_poll, "adv", adv, adv->unit,
1, adv->max_openings, devq);
if (adv->sim == NULL)
- return (0);
+ return (ENOMEM);
/*
* Register the bus.
@@ -1409,21 +1409,22 @@ adv_attach(adv)
*/
if (xpt_bus_register(adv->sim, 0) != CAM_SUCCESS) {
cam_sim_free(adv->sim, /*free devq*/TRUE);
- return (0);
+ return (ENXIO);
}
if (xpt_create_path(&adv->path, /*periph*/NULL, cam_sim_path(adv->sim),
CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD)
- == CAM_REQ_CMP) {
- xpt_setup_ccb(&csa.ccb_h, adv->path, /*priority*/5);
- csa.ccb_h.func_code = XPT_SASYNC_CB;
- csa.event_enable = AC_FOUND_DEVICE|AC_LOST_DEVICE;
- csa.callback = advasync;
- csa.callback_arg = adv;
- xpt_action((union ccb *)&csa);
+ != CAM_REQ_CMP) {
+ xpt_bus_deregister(cam_sim_path(adv->sim));
+ cam_sim_free(adv->sim, /*free devq*/TRUE);
+ return (ENXIO);
}
- return (1);
-error_exit:
+ xpt_setup_ccb(&csa.ccb_h, adv->path, /*priority*/5);
+ csa.ccb_h.func_code = XPT_SASYNC_CB;
+ csa.event_enable = AC_FOUND_DEVICE|AC_LOST_DEVICE;
+ csa.callback = advasync;
+ csa.callback_arg = adv;
+ xpt_action((union ccb *)&csa);
return (0);
}
OpenPOWER on IntegriCloud