summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsobomax <sobomax@FreeBSD.org>2005-11-30 19:24:51 +0000
committersobomax <sobomax@FreeBSD.org>2005-11-30 19:24:51 +0000
commit29543921eae6a40180f2f784021ed1b42d328e2a (patch)
tree81ef73354089000f24e964c7cdffc0035dfe7d01
parent937b629bd5f0ccf20166962cb9ec63905573b02c (diff)
downloadFreeBSD-src-29543921eae6a40180f2f784021ed1b42d328e2a.zip
FreeBSD-src-29543921eae6a40180f2f784021ed1b42d328e2a.tar.gz
Check for g_read_data(9) errors properly:
o The only indication of error condition is NULL value returned by the function; o value pointed to by error argument is undefined in the case when operation completes successfully. Discussed with: phk
-rw-r--r--sys/geom/eli/g_eli.c2
-rw-r--r--sys/geom/geom_aes.c2
-rw-r--r--sys/geom/geom_apple.c6
-rw-r--r--sys/geom/geom_bsd.c4
-rw-r--r--sys/geom/geom_fox.c2
-rw-r--r--sys/geom/geom_gpt.c10
-rw-r--r--sys/geom/geom_mbr.c4
-rw-r--r--sys/geom/geom_pc98.c2
-rw-r--r--sys/geom/geom_sunlabel.c2
-rw-r--r--sys/geom/geom_vol_ffs.c2
-rw-r--r--sys/geom/label/g_label_iso9660.c2
-rw-r--r--sys/geom/label/g_label_msdosfs.c2
-rw-r--r--sys/geom/label/g_label_ufs.c2
-rw-r--r--sys/geom/mirror/g_mirror.c2
-rw-r--r--sys/geom/raid3/g_raid3.c2
-rw-r--r--sys/geom/uzip/g_uzip.c4
-rw-r--r--sys/geom/vinum/geom_vinum_drive.c2
17 files changed, 26 insertions, 26 deletions
diff --git a/sys/geom/eli/g_eli.c b/sys/geom/eli/g_eli.c
index 230156a..f00a6e2 100644
--- a/sys/geom/eli/g_eli.c
+++ b/sys/geom/eli/g_eli.c
@@ -576,7 +576,7 @@ g_eli_read_metadata(struct g_class *mp, struct g_provider *pp,
buf = g_read_data(cp, pp->mediasize - pp->sectorsize, pp->sectorsize,
&error);
g_topology_lock();
- if (error != 0)
+ if (buf == NULL)
goto end;
eli_metadata_decode(buf, md);
end:
diff --git a/sys/geom/geom_aes.c b/sys/geom/geom_aes.c
index de7e1c6..e0b414b 100644
--- a/sys/geom/geom_aes.c
+++ b/sys/geom/geom_aes.c
@@ -300,7 +300,7 @@ g_aes_taste(struct g_class *mp, struct g_provider *pp, int flags __unused)
sectorsize = cp->provider->sectorsize;
mediasize = cp->provider->mediasize;
buf = g_read_data(cp, 0, sectorsize, &error);
- if (buf == NULL || error != 0) {
+ if (buf == NULL) {
break;
}
sc = g_malloc(sizeof(struct g_aes_softc), M_WAITOK | M_ZERO);
diff --git a/sys/geom/geom_apple.c b/sys/geom/geom_apple.c
index 04f5cac..883fe70 100644
--- a/sys/geom/geom_apple.c
+++ b/sys/geom/geom_apple.c
@@ -166,7 +166,7 @@ g_apple_taste(struct g_class *mp, struct g_provider *pp, int insist)
break;
buf = g_read_data(cp, 0, sectorsize, &error);
- if (buf == NULL || error != 0)
+ if (buf == NULL)
break;
/*
@@ -188,7 +188,7 @@ g_apple_taste(struct g_class *mp, struct g_provider *pp, int insist)
* Read in the first partition map
*/
buf = g_read_data(cp, sectorsize, sectorsize, &error);
- if (buf == NULL || error != 0)
+ if (buf == NULL)
break;
/*
@@ -206,7 +206,7 @@ g_apple_taste(struct g_class *mp, struct g_provider *pp, int insist)
buf = g_read_data(cp, 2 * sectorsize,
(NAPMPART - 1) * sectorsize, &error);
- if (buf == NULL || error != 0)
+ if (buf == NULL)
break;
for (i = 1; i < NAPMPART; i++) {
diff --git a/sys/geom/geom_bsd.c b/sys/geom/geom_bsd.c
index 6b2220d..d715ded 100644
--- a/sys/geom/geom_bsd.c
+++ b/sys/geom/geom_bsd.c
@@ -207,7 +207,7 @@ g_bsd_try(struct g_geom *gp, struct g_slicer *gsp, struct g_consumer *cp, int se
error = 0;
secoff = offset % secsize;
buf = g_read_data(cp, offset - secoff, secsize, &error);
- if (buf == NULL || error != 0)
+ if (buf == NULL)
return (ENOENT);
/* Decode into our native format. */
@@ -248,7 +248,7 @@ g_bsd_writelabel(struct g_geom *gp, u_char *bootcode)
secoff = ms->labeloffset % secsize;
if (bootcode == NULL) {
buf = g_read_data(cp, ms->labeloffset - secoff, secsize, &error);
- if (buf == NULL || error != 0)
+ if (buf == NULL)
return (error);
bcopy(ms->label, buf + secoff, sizeof(ms->label));
} else {
diff --git a/sys/geom/geom_fox.c b/sys/geom/geom_fox.c
index 2eef7cd..89f444b 100644
--- a/sys/geom/geom_fox.c
+++ b/sys/geom/geom_fox.c
@@ -373,7 +373,7 @@ g_fox_taste(struct g_class *mp, struct g_provider *pp, int flags __unused)
g_topology_unlock();
buf = g_read_data(cp, 0, sectorsize, &error);
g_topology_lock();
- if (buf == NULL || error != 0)
+ if (buf == NULL)
break;
if (memcmp(buf, FOX_MAGIC, strlen(FOX_MAGIC)))
break;
diff --git a/sys/geom/geom_gpt.c b/sys/geom/geom_gpt.c
index 5f07a81..89a91ab 100644
--- a/sys/geom/geom_gpt.c
+++ b/sys/geom/geom_gpt.c
@@ -300,7 +300,7 @@ g_gpt_has_pmbr(struct g_consumer *cp, int *error)
uint16_t magic;
buf = g_read_data(cp, 0L, cp->provider->sectorsize, error);
- if (*error != 0)
+ if (buf == NULL)
return (0);
pmbr = 0;
@@ -826,14 +826,14 @@ g_gpt_taste(struct g_class *mp, struct g_provider *pp, int insist __unused)
* there's a GPT, including whether recovery is appropriate.
*/
buf = g_read_data(cp, pp->sectorsize, pp->sectorsize, &error);
- if (error != 0)
+ if (buf == NULL)
goto fail;
g_gpt_load_hdr(softc, pp, GPT_HDR_PRIMARY, buf);
g_free(buf);
buf = g_read_data(cp, pp->mediasize - pp->sectorsize, pp->sectorsize,
&error);
- if (error != 0)
+ if (buf == NULL)
goto fail;
g_gpt_load_hdr(softc, pp, GPT_HDR_SECONDARY, buf);
g_free(buf);
@@ -915,7 +915,7 @@ g_gpt_taste(struct g_class *mp, struct g_provider *pp, int insist __unused)
ofs = hdr->hdr_lba_table * pp->sectorsize;
buf = g_read_data(cp, ofs, nbytes, &error);
- if (error != 0)
+ if (buf == NULL)
goto fail;
/*
@@ -934,7 +934,7 @@ g_gpt_taste(struct g_class *mp, struct g_provider *pp, int insist __unused)
hdr = softc->hdr + GPT_HDR_SECONDARY;
ofs = hdr->hdr_lba_table * pp->sectorsize;
buf = g_read_data(cp, ofs, nbytes, &error);
- if (error != 0)
+ if (buf == NULL)
goto fail;
if (!g_gpt_tbl_ok(hdr, buf)) {
diff --git a/sys/geom/geom_mbr.c b/sys/geom/geom_mbr.c
index 9fbb3c7..218517e 100644
--- a/sys/geom/geom_mbr.c
+++ b/sys/geom/geom_mbr.c
@@ -284,7 +284,7 @@ g_mbr_taste(struct g_class *mp, struct g_provider *pp, int insist)
break;
ms->sectorsize = sectorsize;
buf = g_read_data(cp, 0, sectorsize, &error);
- if (buf == NULL || error != 0)
+ if (buf == NULL)
break;
/*
@@ -454,7 +454,7 @@ g_mbrext_taste(struct g_class *mp, struct g_provider *pp, int insist __unused)
break;
for (;;) {
buf = g_read_data(cp, off, sectorsize, &error);
- if (buf == NULL || error != 0)
+ if (buf == NULL)
break;
if (buf[0x1fe] != 0x55 && buf[0x1ff] != 0xaa) {
g_free(buf);
diff --git a/sys/geom/geom_pc98.c b/sys/geom/geom_pc98.c
index 77c4ac2..a380f0d 100644
--- a/sys/geom/geom_pc98.c
+++ b/sys/geom/geom_pc98.c
@@ -289,7 +289,7 @@ g_pc98_taste(struct g_class *mp, struct g_provider *pp, int flags)
if (sectorsize % 512 != 0)
break;
buf = g_read_data(cp, 0, 8192, &error);
- if (buf == NULL || error != 0)
+ if (buf == NULL)
break;
ms->fwsectors = fwsectors;
ms->fwheads = fwheads;
diff --git a/sys/geom/geom_sunlabel.c b/sys/geom/geom_sunlabel.c
index 4c453cd..06e3bbd7 100644
--- a/sys/geom/geom_sunlabel.c
+++ b/sys/geom/geom_sunlabel.c
@@ -278,7 +278,7 @@ g_sunlabel_taste(struct g_class *mp, struct g_provider *pp, int flags)
g_topology_unlock();
buf = g_read_data(cp, 0, ms->sectorsize, &error);
g_topology_lock();
- if (buf == NULL || error != 0)
+ if (buf == NULL)
break;
/*
diff --git a/sys/geom/geom_vol_ffs.c b/sys/geom/geom_vol_ffs.c
index d90222f..f6fd88e 100644
--- a/sys/geom/geom_vol_ffs.c
+++ b/sys/geom/geom_vol_ffs.c
@@ -100,7 +100,7 @@ g_vol_ffs_taste(struct g_class *mp, struct g_provider *pp, int flags)
fs = (struct fs *) g_read_data(cp, superblock,
SBLOCKSIZE, &error);
- if (fs == NULL || error != 0)
+ if (fs == NULL)
continue;
/* Check for magic and make sure things are the right size */
if (fs->fs_magic == FS_UFS1_MAGIC) {
diff --git a/sys/geom/label/g_label_iso9660.c b/sys/geom/label/g_label_iso9660.c
index 0a2fa8e..21078e1 100644
--- a/sys/geom/label/g_label_iso9660.c
+++ b/sys/geom/label/g_label_iso9660.c
@@ -57,7 +57,7 @@ g_label_iso9660_taste(struct g_consumer *cp, char *label, size_t size)
return;
sector = (char *)g_read_data(cp, ISO9660_OFFSET, pp->sectorsize,
&error);
- if (sector == NULL || error != 0)
+ if (sector == NULL)
return;
if (bcmp(sector, ISO9660_MAGIC, sizeof(ISO9660_MAGIC) - 1) != 0) {
g_free(sector);
diff --git a/sys/geom/label/g_label_msdosfs.c b/sys/geom/label/g_label_msdosfs.c
index ff0d7c3..670b52a 100644
--- a/sys/geom/label/g_label_msdosfs.c
+++ b/sys/geom/label/g_label_msdosfs.c
@@ -56,7 +56,7 @@ g_label_msdosfs_taste(struct g_consumer *cp, char *label, size_t size)
label[0] = '\0';
sector = (char *)g_read_data(cp, 0, pp->sectorsize, &error);
- if (sector == NULL || error != 0)
+ if (sector == NULL)
return;
if (strncmp(sector + 0x36, FAT12, strlen(FAT12)) == 0) {
G_LABEL_DEBUG(1, "MSDOS (FAT12) file system detected on %s.",
diff --git a/sys/geom/label/g_label_ufs.c b/sys/geom/label/g_label_ufs.c
index 1be6b85..890669b 100644
--- a/sys/geom/label/g_label_ufs.c
+++ b/sys/geom/label/g_label_ufs.c
@@ -72,7 +72,7 @@ g_label_ufs_taste(struct g_consumer *cp, char *label, size_t size)
fs = (struct fs *)g_read_data(cp, superblock, SBLOCKSIZE,
&error);
- if (fs == NULL || error != 0)
+ if (fs == NULL)
continue;
/* Check for magic and make sure things are the right size */
if (fs->fs_magic == FS_UFS1_MAGIC) {
diff --git a/sys/geom/mirror/g_mirror.c b/sys/geom/mirror/g_mirror.c
index b6b0040..e627c60 100644
--- a/sys/geom/mirror/g_mirror.c
+++ b/sys/geom/mirror/g_mirror.c
@@ -2346,7 +2346,7 @@ g_mirror_read_metadata(struct g_consumer *cp, struct g_mirror_metadata *md)
&error);
g_topology_lock();
g_access(cp, -1, 0, 0);
- if (error != 0) {
+ if (buf == NULL) {
G_MIRROR_DEBUG(1, "Cannot read metadata from %s (error=%d).",
cp->provider->name, error);
if (buf != NULL)
diff --git a/sys/geom/raid3/g_raid3.c b/sys/geom/raid3/g_raid3.c
index a16817d..0d109df 100644
--- a/sys/geom/raid3/g_raid3.c
+++ b/sys/geom/raid3/g_raid3.c
@@ -2571,7 +2571,7 @@ g_raid3_read_metadata(struct g_consumer *cp, struct g_raid3_metadata *md)
&error);
g_topology_lock();
g_access(cp, -1, 0, 0);
- if (error != 0) {
+ if (buf == NULL) {
G_RAID3_DEBUG(1, "Cannot read metadata from %s (error=%d).",
cp->provider->name, error);
if (buf != NULL)
diff --git a/sys/geom/uzip/g_uzip.c b/sys/geom/uzip/g_uzip.c
index 7fb5614..4fcb137 100644
--- a/sys/geom/uzip/g_uzip.c
+++ b/sys/geom/uzip/g_uzip.c
@@ -380,7 +380,7 @@ g_uzip_taste(struct g_class *mp, struct g_provider *pp, int flags)
DPRINTF(("%s: media sectorsize %u, mediasize %lld\n",
gp->name, pp->sectorsize, pp->mediasize));
buf = g_read_data(cp, 0, pp->sectorsize, &error);
- if (buf == NULL || error != 0)
+ if (buf == NULL)
goto err;
header = (struct cloop_header *) buf;
if (strncmp(header->magic, CLOOP_MAGIC_START,
@@ -430,7 +430,7 @@ g_uzip_taste(struct g_class *mp, struct g_provider *pp, int flags)
free(buf, M_GEOM);
buf = g_read_data(
cp, blk * pp->sectorsize, pp->sectorsize, &error);
- if (buf == NULL || error != 0)
+ if (buf == NULL)
goto err;
nread = MIN(total_offsets - offsets_read,
pp->sectorsize / sizeof(uint64_t));
diff --git a/sys/geom/vinum/geom_vinum_drive.c b/sys/geom/vinum/geom_vinum_drive.c
index 2cdeb08..519c9f1 100644
--- a/sys/geom/vinum/geom_vinum_drive.c
+++ b/sys/geom/vinum/geom_vinum_drive.c
@@ -453,7 +453,7 @@ gv_drive_taste(struct g_class *mp, struct g_provider *pp, int flags __unused)
/* Now check if the provided slice is a valid vinum drive. */
do {
vhdr = g_read_data(cp, GV_HDR_OFFSET, pp->sectorsize, &error);
- if (vhdr == NULL || error != 0)
+ if (vhdr == NULL)
break;
if (vhdr->magic != GV_MAGIC) {
g_free(vhdr);
OpenPOWER on IntegriCloud