|
@@ -350,8 +350,6 @@ static int set_protective_mbr(struct blk_desc *dev_desc)
|
|
{
|
|
{
|
|
/* Setup the Protective MBR */
|
|
/* Setup the Protective MBR */
|
|
ALLOC_CACHE_ALIGN_BUFFER_PAD(legacy_mbr, p_mbr, 1, dev_desc->blksz);
|
|
ALLOC_CACHE_ALIGN_BUFFER_PAD(legacy_mbr, p_mbr, 1, dev_desc->blksz);
|
|
- memset(p_mbr, 0, sizeof(*p_mbr));
|
|
|
|
-
|
|
|
|
if (p_mbr == NULL) {
|
|
if (p_mbr == NULL) {
|
|
printf("%s: calloc failed!\n", __func__);
|
|
printf("%s: calloc failed!\n", __func__);
|
|
return -1;
|
|
return -1;
|
|
@@ -363,6 +361,10 @@ static int set_protective_mbr(struct blk_desc *dev_desc)
|
|
return -1;
|
|
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 */
|
|
/* Append signature */
|
|
p_mbr->signature = MSDOS_MBR_SIGNATURE;
|
|
p_mbr->signature = MSDOS_MBR_SIGNATURE;
|
|
p_mbr->partition_record[0].sys_ind = EFI_PMBR_OSTYPE_EFI_GPT;
|
|
p_mbr->partition_record[0].sys_ind = EFI_PMBR_OSTYPE_EFI_GPT;
|