aboutsummaryrefslogtreecommitdiff
path: root/sys/boot/common/part.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/boot/common/part.c')
-rw-r--r--sys/boot/common/part.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/sys/boot/common/part.c b/sys/boot/common/part.c
index d37eee52ca77..55153aa4d8ad 100644
--- a/sys/boot/common/part.c
+++ b/sys/boot/common/part.c
@@ -634,7 +634,7 @@ ptable_open(void *dev, off_t sectors, uint16_t sectorsize,
for (i = 0, count = 0; i < NDOSPART; i++) {
if (dp[i].dp_flag != 0 && dp[i].dp_flag != 0x80) {
DEBUG("invalid partition flag %x", dp[i].dp_flag);
- break;
+ goto out;
}
#ifdef LOADER_GPT_SUPPORT
if (dp[i].dp_typ == DOSPTYP_PMBR) {
@@ -646,15 +646,12 @@ ptable_open(void *dev, off_t sectors, uint16_t sectorsize,
count++;
}
/* Do we have some invalid values? */
- if (i != NDOSPART ||
- (table->type == PTABLE_GPT && count > 1)) {
+ if (table->type == PTABLE_GPT && count > 1) {
if (dp[1].dp_typ != DOSPTYP_HFS) {
table->type = PTABLE_NONE;
- DEBUG("invalid values detected, ignore "
- "partition table");
- goto out;
- }
- DEBUG("Bootcamp detected");
+ DEBUG("Incorrect PMBR, ignore it");
+ } else
+ DEBUG("Bootcamp detected");
}
#ifdef LOADER_GPT_SUPPORT
if (table->type == PTABLE_GPT) {