We overallocate by quite a bit for bootable disks; spotted while reading the code and tested by installboot(8)ing onto vnd(4) backed softraid disks (after booting a kernel with this diff).
$ egdb --quiet obj/bsd.gdb Reading symbols from obj/bsd.gdb...done. (gdb) p sizeof(struct sr_meta_crypto) $1 = 2480 (gdb) p sizeof(struct sr_meta_boot) $2 = 168 Feedback? OK? Index: sys/dev/softraid.c =================================================================== RCS file: /cvs/src/sys/dev/softraid.c,v retrieving revision 1.405 diff -u -p -r1.405 softraid.c --- sys/dev/softraid.c 27 Jun 2020 17:28:58 -0000 1.405 +++ sys/dev/softraid.c 12 Jul 2020 17:59:56 -0000 @@ -3736,7 +3736,7 @@ sr_ioctl_installboot(struct sr_softc *sc if (omi == NULL) { omi = malloc(sizeof(struct sr_meta_opt_item), M_DEVBUF, M_WAITOK | M_ZERO); - omi->omi_som = malloc(sizeof(struct sr_meta_crypto), M_DEVBUF, + omi->omi_som = malloc(sizeof(struct sr_meta_boot), M_DEVBUF, M_WAITOK | M_ZERO); omi->omi_som->som_type = SR_OPT_BOOT; omi->omi_som->som_length = sizeof(struct sr_meta_boot);