From: Johannes Berg <[email protected]>

Since my change to split out the regulatory init to occur later,
any issues during earlier cfg80211_init() or errors during the
platform device allocation would lead to crashes later. Make this
more robust by checking that the earlier initialization succeeded.

Fixes: d7be102f2945 ("cfg80211: initialize regulatory keys/database later")
Signed-off-by: Johannes Berg <[email protected]>
---
 net/wireless/reg.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 56be68a27bb9..d7b93a772edc 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -3829,6 +3829,15 @@ static int __init regulatory_init_db(void)
 {
        int err;
 
+       /*
+        * It's possible that - due to other bugs/issues - cfg80211
+        * never called regulatory_init() below, or that it failed;
+        * in that case, don't try to do any further work here as
+        * it's doomed to lead to crashes.
+        */
+       if (IS_ERR_OR_NULL(reg_pdev))
+               return -EINVAL;
+
        err = load_builtin_regdb_keys();
        if (err)
                return err;
-- 
2.14.4

Reply via email to