summaryrefslogtreecommitdiffstats
path: root/usr.sbin/mptutil/mpt_cam.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/mptutil/mpt_cam.c')
-rw-r--r--usr.sbin/mptutil/mpt_cam.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/usr.sbin/mptutil/mpt_cam.c b/usr.sbin/mptutil/mpt_cam.c
index b14451a..3adbed8 100644
--- a/usr.sbin/mptutil/mpt_cam.c
+++ b/usr.sbin/mptutil/mpt_cam.c
@@ -63,6 +63,7 @@ fetch_path_id(path_id_t *path_id)
struct bus_match_pattern *b;
union ccb ccb;
size_t bufsize;
+ int error;
if (xpt_open() < 0)
return (ENXIO);
@@ -91,9 +92,10 @@ fetch_path_id(path_id_t *path_id)
b->flags = BUS_MATCH_NAME | BUS_MATCH_UNIT | BUS_MATCH_BUS_ID;
if (ioctl(xptfd, CAMIOCOMMAND, &ccb) < 0) {
+ error = errno;
free(ccb.cdm.matches);
free(ccb.cdm.patterns);
- return (errno);
+ return (error);
}
free(ccb.cdm.patterns);
@@ -124,7 +126,7 @@ mpt_query_disk(U8 VolumeBus, U8 VolumeID, struct mpt_query_disk *qd)
union ccb ccb;
path_id_t path_id;
size_t bufsize;
- int error, i;
+ int error;
/* mpt(4) only handles devices on bus 0. */
if (VolumeBus != 0)
@@ -164,10 +166,10 @@ mpt_query_disk(U8 VolumeBus, U8 VolumeID, struct mpt_query_disk *qd)
p->flags = PERIPH_MATCH_PATH | PERIPH_MATCH_NAME | PERIPH_MATCH_TARGET;
if (ioctl(xptfd, CAMIOCOMMAND, &ccb) < 0) {
- i = errno;
+ error = errno;
free(ccb.cdm.matches);
free(ccb.cdm.patterns);
- return (i);
+ return (error);
}
free(ccb.cdm.patterns);
@@ -397,8 +399,8 @@ mpt_fetch_disks(int fd, int *ndisks, struct mpt_standalone_disk **disksp)
union ccb ccb;
path_id_t path_id;
size_t bufsize;
- u_int i;
int count, error;
+ uint32_t i;
if (xpt_open() < 0)
return (ENXIO);
@@ -431,10 +433,10 @@ mpt_fetch_disks(int fd, int *ndisks, struct mpt_standalone_disk **disksp)
p->flags = PERIPH_MATCH_PATH | PERIPH_MATCH_NAME;
if (ioctl(xptfd, CAMIOCOMMAND, &ccb) < 0) {
- i = errno;
+ error = errno;
free(ccb.cdm.matches);
free(ccb.cdm.patterns);
- return (i);
+ return (error);
}
free(ccb.cdm.patterns);
@@ -481,6 +483,8 @@ mpt_fetch_disks(int fd, int *ndisks, struct mpt_standalone_disk **disksp)
* exclude them from the list.
*/
ioc2 = mpt_read_ioc_page(fd, 2, NULL);
+ if (ioc2 == NULL)
+ return (errno);
disks = calloc(ccb.cdm.num_matches, sizeof(*disks));
count = 0;
for (i = 0; i < ccb.cdm.num_matches; i++) {
OpenPOWER on IntegriCloud