amd64 with stripped-down kernel (kind of MINIMAL). crypto.ko gets dynamically loaded. In that scenario, loading if_ovpn fails though: root@latitude / # kldload if_ovpn kldload: an error occurred while loading module if_ovpn. Please check dmesg(8) for more details. root@latitude / # dmesg -a | tail -2 link_elf_obj: symbol crypto_freesession undefined linker_load_file: /boot/kernel/if_ovpn.ko - unsupported file type root@latitude / # I noticed that crypto_freesession is a *local* text symbol in crypto.ko. root@latitude / # nm /boot/kernel/crypto.ko | fgrep crypto_freesession 0000000000000d60 t crypto_freesession root@latitude / # However, in a GENERIC kernel (with device crypto) it's a global text symbol: root@latitude / # nm /boot/GENERIC/kernel | fgrep crypto_freesession ffffffff805a0520 T crypto_freesession root@latitude / # Indeed if_ovpn kldloads nicely with linked-in crypto. Is this intended behaviour?
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/src/commit/?id=17c9ac457cf16c1251afa7364bc47ed52ec29057 commit 17c9ac457cf16c1251afa7364bc47ed52ec29057 Author: Kristof Provost <kp@FreeBSD.org> AuthorDate: 2024-09-12 15:51:04 +0000 Commit: Kristof Provost <kp@FreeBSD.org> CommitDate: 2024-09-12 17:32:05 +0000 if_ovpn: declare our dependency on the crypto module PR: 281460 MFC after: 1 week Sponsored by: Rubicon Communications, LLC ("Netgate") sys/net/if_ovpn.c | 1 + 1 file changed, 1 insertion(+)
^Triage: appears to be a problem with loadable modules.
A commit in branch stable/14 references this bug: URL: https://cgit.FreeBSD.org/src/commit/?id=79c34d704f3121cb7f3748ec6b7a5c7f787633bf commit 79c34d704f3121cb7f3748ec6b7a5c7f787633bf Author: Kristof Provost <kp@FreeBSD.org> AuthorDate: 2024-09-12 15:51:04 +0000 Commit: Kristof Provost <kp@FreeBSD.org> CommitDate: 2024-09-18 08:22:39 +0000 if_ovpn: declare our dependency on the crypto module PR: 281460 MFC after: 1 week Sponsored by: Rubicon Communications, LLC ("Netgate") (cherry picked from commit 17c9ac457cf16c1251afa7364bc47ed52ec29057) sys/net/if_ovpn.c | 1 + 1 file changed, 1 insertion(+)