diff options
Diffstat (limited to 'disk/part_efi.c')
-rw-r--r-- | disk/part_efi.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/disk/part_efi.c b/disk/part_efi.c index 72e3997b84..5c1039f013 100644 --- a/disk/part_efi.c +++ b/disk/part_efi.c @@ -350,8 +350,6 @@ static int set_protective_mbr(struct blk_desc *dev_desc) { /* Setup the Protective MBR */ ALLOC_CACHE_ALIGN_BUFFER_PAD(legacy_mbr, p_mbr, 1, dev_desc->blksz); - memset(p_mbr, 0, sizeof(*p_mbr)); - if (p_mbr == NULL) { printf("%s: calloc failed!\n", __func__); return -1; @@ -363,6 +361,10 @@ static int set_protective_mbr(struct blk_desc *dev_desc) return -1; } + /* Clear all data in MBR except of backed up boot code */ + memset((char *)p_mbr + MSDOS_MBR_BOOT_CODE_SIZE, 0, sizeof(*p_mbr) - + MSDOS_MBR_BOOT_CODE_SIZE); + /* Append signature */ p_mbr->signature = MSDOS_MBR_SIGNATURE; p_mbr->partition_record[0].sys_ind = EFI_PMBR_OSTYPE_EFI_GPT; |