OSDN Git Service

cfg80211: regulatory: make initialization more robust
authorJohannes Berg <johannes.berg@intel.com>
Mon, 1 Oct 2018 09:43:00 +0000 (11:43 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Jan 2020 13:49:57 +0000 (14:49 +0100)
[ Upstream commit 71e5e886806ee3f8e0c44ed945eb2e4d6659c6e3 ]

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 <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/wireless/reg.c

index 6484123..5643bde 100644 (file)
@@ -3870,6 +3870,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;