While omi->omi_som seems variable in size, omi is only ever allocated with one size and softraid.c uses the same size for free(9) as well.
Tested with cryto softraid and keydisk. Feedback? OK? Index: dev/softraid_crypto.c =================================================================== RCS file: /cvs/src/sys/dev/softraid_crypto.c,v retrieving revision 1.138 diff -u -p -r1.138 softraid_crypto.c --- dev/softraid_crypto.c 4 Jul 2019 18:09:17 -0000 1.138 +++ dev/softraid_crypto.c 12 Jul 2020 18:00:29 -0000 @@ -882,7 +882,7 @@ done: for (omi = SLIST_FIRST(&som); omi != NULL; omi = omi_next) { omi_next = SLIST_NEXT(omi, omi_link); free(omi->omi_som, M_DEVBUF, 0); - free(omi, M_DEVBUF, 0); + free(omi, M_DEVBUF, sizeof(*omi)); } free(sm, M_DEVBUF, SR_META_SIZE * DEV_BSIZE);