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. |
||
|---|---|---|
| .. | ||
| boot0 | ||
| boot0sio | ||
| boot2 | ||
| btx | ||
| cdboot | ||
| common | ||
| gptboot | ||
| gptzfsboot | ||
| isoboot | ||
| kgzldr | ||
| libfirewire | ||
| libi386 | ||
| loader | ||
| loader_4th | ||
| loader_lua | ||
| loader_simp | ||
| mbr | ||
| pmbr | ||
| pxeldr | ||
| zfsboot | ||
| boot.ldscript | ||
| Makefile | ||
| Makefile.inc | ||