mirror of
https://github.com/opnsense/src.git
synced 2026-02-28 20:30:57 -05:00
When loader(8) is built with zfs support enabled, it assumes that any extarg data present is a zfs_boot_args struct, but if the first-stage loader was gptboot(8) the extarg data is actually a geli_boot_args struct. Luckily, zfsboot(8) and gptzfsboot(8) have always passed KARGS_FLAGS_ZFS along with KARGS_FLAGS_EXTARG, so we can use KARGS_FLAGS_ZFS to decide whether the extarg data is a zfs_boot_args struct. To avoid similar problems in the future, gptboot(8) now passes a new KARGS_FLAGS_GELI to indicate that extarg data is geli_boot_args. In loader(8), if the neither KARGS_FLAGS_ZFS nor KARGS_FLAGS_GELI is set but extarg data is present (which will be the case for gptboot compiled before this change), we now check for the known size of the geli_boot_args struct passed by the older versions of gptboot as a way of confirming what type of extarg data is present. In a semi-related tidying up, since loader's main() has already decided what type of extarg data is present and set the global 'zargs' var accordingly, don't repeat the check in extract_currdev, just check whether zargs is NULL or not. X-MFC after: a few days, along with prior related changes. |
||
|---|---|---|
| .. | ||
| arm | ||
| arm64 | ||
| common | ||
| defaults | ||
| efi | ||
| fdt | ||
| ficl | ||
| ficl32 | ||
| forth | ||
| i386 | ||
| kshim | ||
| liblua | ||
| liblua32 | ||
| libsa | ||
| libsa32 | ||
| lua | ||
| man | ||
| mips | ||
| ofw | ||
| powerpc | ||
| sparc64 | ||
| uboot | ||
| usb | ||
| userboot | ||
| defs.mk | ||
| fdt.mk | ||
| ficl.mk | ||
| loader.mk | ||
| lua.mk | ||
| Makefile | ||
| Makefile.amd64 | ||
| Makefile.inc | ||
| uboot.mk | ||