gpt: include backup-in-sync check in revalidation

This commit is contained in:
Michael Marineau 2016-09-21 15:01:09 -07:00 committed by David Michael
parent 285368e375
commit f19f5cc49d
1 changed files with 5 additions and 5 deletions

View File

@ -373,6 +373,11 @@ grub_gpt_check_backup (grub_gpt_t gpt)
if (backup <= end) if (backup <= end)
return grub_error (GRUB_ERR_BAD_PART_TABLE, "invalid backup GPT LBA"); return grub_error (GRUB_ERR_BAD_PART_TABLE, "invalid backup GPT LBA");
/* If both primary and backup are valid but differ prefer the primary. */
if ((gpt->status & GRUB_GPT_PRIMARY_HEADER_VALID) &&
!grub_gpt_headers_equal (gpt))
return grub_error (GRUB_ERR_BAD_PART_TABLE, "backup GPT out of sync");
return GRUB_ERR_NONE; return GRUB_ERR_NONE;
} }
@ -436,11 +441,6 @@ grub_gpt_read_backup (grub_disk_t disk, grub_gpt_t gpt)
if (grub_le_to_cpu64 (gpt->backup.header_lba) != sector) if (grub_le_to_cpu64 (gpt->backup.header_lba) != sector)
return grub_error (GRUB_ERR_BAD_PART_TABLE, "invalid backup GPT LBA"); return grub_error (GRUB_ERR_BAD_PART_TABLE, "invalid backup GPT LBA");
/* If both primary and backup are valid but differ prefer the primary. */
if ((gpt->status & GRUB_GPT_PRIMARY_HEADER_VALID) &&
!grub_gpt_headers_equal(gpt))
return grub_error (GRUB_ERR_BAD_PART_TABLE, "backup GPT of of sync");
gpt->status |= GRUB_GPT_BACKUP_HEADER_VALID; gpt->status |= GRUB_GPT_BACKUP_HEADER_VALID;
return GRUB_ERR_NONE; return GRUB_ERR_NONE;
} }