diff options
author | dim <dim@FreeBSD.org> | 2014-11-29 18:44:52 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2014-11-29 18:44:52 +0000 |
commit | 409c2db38ee329b80114866313cc0b55476e2f28 (patch) | |
tree | 304c3b270d824fbfd3b260b7805d280c6720d066 /sys/boot/i386 | |
parent | 931d83884d23b59f424e4fc8578c2a13c8155d3a (diff) | |
parent | d737995628df5a4f316eee2f864017a1075f9f87 (diff) | |
download | FreeBSD-src-409c2db38ee329b80114866313cc0b55476e2f28.zip FreeBSD-src-409c2db38ee329b80114866313cc0b55476e2f28.tar.gz |
Merge ^/head r274961 through r275261.
Diffstat (limited to 'sys/boot/i386')
-rw-r--r-- | sys/boot/i386/boot2/boot2.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/sys/boot/i386/boot2/boot2.c b/sys/boot/i386/boot2/boot2.c index 4e1a835..001126f 100644 --- a/sys/boot/i386/boot2/boot2.c +++ b/sys/boot/i386/boot2/boot2.c @@ -501,6 +501,7 @@ dskread(void *buf, unsigned lba, unsigned nblk) char *sec; unsigned i; uint8_t sl; + const char *reason; if (!dsk_meta) { sec = dmadat->secbuf; @@ -525,8 +526,8 @@ dskread(void *buf, unsigned lba, unsigned nblk) if (sl != COMPATIBILITY_SLICE) dp += sl - BASE_SLICE; if (dp->dp_typ != DOSPTYP_386BSD) { - printf("Invalid %s\n", "slice"); - return -1; + reason = "slice"; + goto error; } dsk.start = dp->dp_start; } @@ -535,8 +536,8 @@ dskread(void *buf, unsigned lba, unsigned nblk) d = (void *)(sec + LABELOFFSET); if (d->d_magic != DISKMAGIC || d->d_magic2 != DISKMAGIC) { if (dsk.part != RAW_PART) { - printf("Invalid %s\n", "label"); - return -1; + reason = "label"; + goto error; } } else { if (!dsk.init) { @@ -546,14 +547,17 @@ dskread(void *buf, unsigned lba, unsigned nblk) } if (dsk.part >= d->d_npartitions || !d->d_partitions[dsk.part].p_size) { - printf("Invalid %s\n", "partition"); - return -1; + reason = "partition"; + goto error; } dsk.start += d->d_partitions[dsk.part].p_offset; dsk.start -= d->d_partitions[RAW_PART].p_offset; } } return drvread(buf, dsk.start + lba, nblk); +error: + printf("Invalid %s\n", reason); + return -1; } static void |