diff options
author | Johannes Berg <johannes.berg@intel.com> | 2018-10-01 12:43:00 +0300 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2018-10-02 10:58:25 +0300 |
commit | 71e5e886806ee3f8e0c44ed945eb2e4d6659c6e3 (patch) | |
tree | cfbc9830c5747b76da5205ed4c5f6c02f4b9b865 /net/wireless/reg.c | |
parent | c70616bd8a56a7ecb79c70b7454ce7f1909ff7e0 (diff) | |
download | linux-71e5e886806ee3f8e0c44ed945eb2e4d6659c6e3.tar.xz |
cfg80211: regulatory: make initialization more robust
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>
Diffstat (limited to 'net/wireless/reg.c')
-rw-r--r-- | net/wireless/reg.c | 9 |
1 files changed, 9 insertions, 0 deletions
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; |