summaryrefslogtreecommitdiffstats
path: root/libfdisk
diff options
context:
space:
mode:
authorKarel Zak2017-07-14 12:48:18 +0200
committerKarel Zak2017-07-14 12:48:18 +0200
commit8ffa3b651d7e74acba8f1d831b7f68fdb3c66aae (patch)
treea246701c098a6bd9976bc320bad23571f4405e86 /libfdisk
parentlibfdisk: remove whitespaces (diff)
downloadkernel-qcow2-util-linux-8ffa3b651d7e74acba8f1d831b7f68fdb3c66aae.tar.gz
kernel-qcow2-util-linux-8ffa3b651d7e74acba8f1d831b7f68fdb3c66aae.tar.xz
kernel-qcow2-util-linux-8ffa3b651d7e74acba8f1d831b7f68fdb3c66aae.zip
libfdisk: make fdisk compliant to UEFI/GPT specification on PMBR
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>
Diffstat (limited to 'libfdisk')
-rw-r--r--libfdisk/src/gpt.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/libfdisk/src/gpt.c b/libfdisk/src/gpt.c
index 40d0912ec..4904b4dea 100644
--- a/libfdisk/src/gpt.c
+++ b/libfdisk/src/gpt.c
@@ -508,11 +508,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);
@@ -1937,8 +1938,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);