]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libfdisk: make fdisk compliant to UEFI/GPT specification on PMBR
authorKarel Zak <kzak@redhat.com>
Fri, 14 Jul 2017 10:48:18 +0000 (12:48 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 17 Jul 2017 09:45:02 +0000 (11:45 +0200)
The PMBR partition record should be StartingCHS=0x002000 (0/0/2)
and EndingCHS=0xFFFFFF (1023/255/63)

Addresses: https://github.com/karelzak/util-linux/issues/485
Signed-off-by: Karel Zak <kzak@redhat.com>
libfdisk/src/gpt.c

index 6b894aa232c0287a403850beb3efc00e01ef296c..9176a6d1011b165ba6fb1ded5b820de941c4b6a7 100644 (file)
@@ -506,11 +506,12 @@ static int gpt_mknew_pmbr(struct fdisk_context *cxt)
                return rc;
 
        pmbr = (struct gpt_legacy_mbr *) cxt->firstsector;
+       memset(pmbr->partition_record, 0, sizeof(pmbr->partition_record));
 
        pmbr->signature = cpu_to_le16(MSDOS_MBR_SIGNATURE);
        pmbr->partition_record[0].os_type      = EFI_PMBR_OSTYPE;
-       pmbr->partition_record[0].start_sector = 1;
-       pmbr->partition_record[0].end_head     = 0xFE;
+       pmbr->partition_record[0].start_sector = 2;
+       pmbr->partition_record[0].end_head     = 0xFF;
        pmbr->partition_record[0].end_sector   = 0xFF;
        pmbr->partition_record[0].end_track    = 0xFF;
        pmbr->partition_record[0].starting_lba = cpu_to_le32(1);
@@ -1925,8 +1926,8 @@ static int gpt_write_pmbr(struct fdisk_context *cxt)
 
        pmbr->signature = cpu_to_le16(MSDOS_MBR_SIGNATURE);
        pmbr->partition_record[0].os_type      = EFI_PMBR_OSTYPE;
-       pmbr->partition_record[0].start_sector = 1;
-       pmbr->partition_record[0].end_head     = 0xFE;
+       pmbr->partition_record[0].start_sector = 2;
+       pmbr->partition_record[0].end_head     = 0xFF;
        pmbr->partition_record[0].end_sector   = 0xFF;
        pmbr->partition_record[0].end_track    = 0xFF;
        pmbr->partition_record[0].starting_lba = cpu_to_le32(1);