diff options
Diffstat (limited to 'sys/boot/common/part.c')
-rw-r--r-- | sys/boot/common/part.c | 13 |
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) { |