From 09b8585ae5ae6749172f8cca40f322999693e32e Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Wed, 21 Jun 2017 13:18:06 -0400 Subject: [PATCH] Don't treat a disk as GPT just because you found a valid PMBR. Without this part_gpt's ->get_info() winds up getting called instead of part_dos's. Signed-off-by: Peter Jones --- disk/part_efi.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/disk/part_efi.c b/disk/part_efi.c index 1b7ba27947..16adb95b0a 100644 --- a/disk/part_efi.c +++ b/disk/part_efi.c @@ -301,10 +301,16 @@ int part_get_info_efi(struct blk_desc *dev_desc, int part, static int part_test_efi(struct blk_desc *dev_desc) { ALLOC_CACHE_ALIGN_BUFFER_PAD(legacy_mbr, legacymbr, 1, dev_desc->blksz); + ALLOC_CACHE_ALIGN_BUFFER_PAD(gpt_header, gpt_head, 1, dev_desc->blksz); + gpt_entry *gpt_pte = NULL; /* Read legacy MBR from block 0 and validate it */ if ((blk_dread(dev_desc, 0, 1, (ulong *)legacymbr) != 1) - || (is_pmbr_valid(legacymbr) != 1)) { + || (is_pmbr_valid(legacymbr) != 1) + || ((is_gpt_valid(dev_desc, GPT_PRIMARY_PARTITION_TABLE_LBA, + gpt_head, &gpt_pte) != 1) + && is_gpt_valid(dev_desc, (dev_desc->lba - 1), + gpt_head, &gpt_pte) != 1)) { return -1; } return 0;