summaryrefslogtreecommitdiff
path: root/sys/arch/arm64/stand/efiboot/efidev.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/arm64/stand/efiboot/efidev.c')
-rw-r--r--sys/arch/arm64/stand/efiboot/efidev.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/sys/arch/arm64/stand/efiboot/efidev.c b/sys/arch/arm64/stand/efiboot/efidev.c
index a877173afe4..902faa7c8ba 100644
--- a/sys/arch/arm64/stand/efiboot/efidev.c
+++ b/sys/arch/arm64/stand/efiboot/efidev.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: efidev.c,v 1.7 2021/06/02 15:31:15 kettenis Exp $ */
+/* $OpenBSD: efidev.c,v 1.8 2021/06/02 22:44:27 krw Exp $ */
/*
* Copyright (c) 2015 YASUOKA Masahiko <yasuoka@yasuoka.net>
@@ -164,12 +164,11 @@ gpt_chk_mbr(struct dos_partition *dp, u_int64_t dsize)
found++;
if (dp2->dp_typ != DOSPTYP_EFI)
continue;
+ if (letoh32(dp2->dp_start) != GPTSECTOR)
+ continue;
psize = letoh32(dp2->dp_size);
- if (psize == (dsize - 1) ||
- psize == UINT32_MAX) {
- if (letoh32(dp2->dp_start) == 1)
- efi++;
- }
+ if (psize <= (dsize - GPTSECTOR) || psize == UINT32_MAX)
+ efi++;
}
if (found == 1 && efi == 1)
return (0);
@@ -297,8 +296,8 @@ findopenbsd_gpt(efi_diskinfo_t ed, const char **err)
return (-1);
}
- /* LBA1: GPT Header */
- lba = 1;
+ /* GPT Header */
+ lba = GPTSECTOR;
status = efid_io(F_READ, ed, EFI_SECTOBLK(ed, lba), EFI_BLKSPERSEC(ed),
buf);
if (EFI_ERROR(status)) {