git: 169ab967e24b - stable/15 - iwlwifi: mld: move module_init() to SI_ORDER_SECOND

From: Bjoern A. Zeeb <bz_at_FreeBSD.org>
Date: Mon, 09 Mar 2026 11:03:52 UTC
The branch stable/15 has been updated by bz:

URL: https://cgit.FreeBSD.org/src/commit/?id=169ab967e24bbb097f228e22c07ddb89ae3bfe5f

commit 169ab967e24bbb097f228e22c07ddb89ae3bfe5f
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2026-03-05 12:41:46 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2026-03-09 11:03:11 +0000

    iwlwifi: mld: move module_init() to SI_ORDER_SECOND
    
    In FreeBSD the iwlwifi driver is a single kernel module.
    As for iwlwifi/mvm we need to make sure the common "iwlwifi drv" code
    is initialized before trying to register the mld sub-driver
    in order for lists, etc. in the registration code to be initialized.
    We do this by using an extended (FreeBSD specific) version of
    module_init which overrides the order parameter of the SYSINIT.
    Otherwise we can randomly (depending on SYSINIT run order) run into
    a NULL pointer deref panic.
    
    Sponsored by:   The FreeBSD Foundation
    PR:             291120
    
    (cherry picked from commit 551c4cb74a807ceae55288bf273f5cfeb37c7c91)
---
 sys/contrib/dev/iwlwifi/mld/mld.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/sys/contrib/dev/iwlwifi/mld/mld.c b/sys/contrib/dev/iwlwifi/mld/mld.c
index 7b46ccc306ab..8075b886ddbf 100644
--- a/sys/contrib/dev/iwlwifi/mld/mld.c
+++ b/sys/contrib/dev/iwlwifi/mld/mld.c
@@ -44,7 +44,11 @@ static int __init iwl_mld_init(void)
 
 	return ret;
 }
+#if defined(__linux__)
 module_init(iwl_mld_init);
+#elif defined(__FreeBSD__)
+module_init_order(iwl_mld_init, SI_ORDER_SECOND);
+#endif
 
 static void __exit iwl_mld_exit(void)
 {