staging: rtl8723bs: fix wireless regulatory API misuse
authorJohannes Berg <johannes.berg@intel.com>
Tue, 26 Jan 2021 10:54:09 +0000 (11:54 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 26 Jan 2021 11:21:42 +0000 (12:21 +0100)
commit81f153faacd04c049e5482d6ff33daddc30ed44e
tree11d3dca9d472cd0e21b535a1d148330530c96cff
parent054c9939b4800a91475d8d89905827bf9e1ad97a
staging: rtl8723bs: fix wireless regulatory API misuse

This code ends up calling wiphy_apply_custom_regulatory(), for which
we document that it should be called before wiphy_register(). This
driver doesn't do that, but calls it from ndo_open() with the RTNL
held, which caused deadlocks.

Since the driver just registers static regdomain data and then the
notifier applies the channel changes if any, there's no reason for
it to call this in ndo_open(), move it earlier to fix the deadlock.

Reported-and-tested-by: Hans de Goede <hdegoede@redhat.com>
Fixes: 51d62f2f2c50 ("cfg80211: Save the regulatory domain with a lock")
Link: https://lore.kernel.org/r/20210126115409.d5fd6f8fe042.Ib5823a6feb2e2aa01ca1a565d2505367f38ad246@changeid
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/staging/rtl8723bs/include/rtw_wifi_regd.h
drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
drivers/staging/rtl8723bs/os_dep/wifi_regd.c