Stop writing big-endian checksums into the little-endian GPT
authorkrw <krw@openbsd.org>
Sun, 2 Jan 2022 17:26:14 +0000 (17:26 +0000)
committerkrw <krw@openbsd.org>
Sun, 2 Jan 2022 17:26:14 +0000 (17:26 +0000)
commit4b0a6a047c0230b31adf6339f831c993f3b4ac06
treea64f5f019850746940ddb93a912181824878748b
parentbb7ff1e6813c33bd62bafd3f79d52f3a3b918a40
Stop writing big-endian checksums into the little-endian GPT
header fields gh_csum and gh_part_csum.

Constrain kernel to accepting only correct little-endian
checksums.

Temporarily allow fdisk(8) to read either endian GPTs so that
big-endian GPTs can be made correct by a simple 'fdisk -e' &&
'w'.

Fixes inter-architecture, inter-OS GPT portability and GPT
fdisk(8) on big-endian architectures. Broken since initial GPT
implementation.

Suggestions and ok kettenis@
sbin/fdisk/gpt.c
sys/kern/subr_disk.c