diff options
author | Ajay Singh <ajay.kathat@microchip.com> | 2022-05-04 16:19:26 +0000 |
---|---|---|
committer | Kalle Valo <kvalo@kernel.org> | 2022-05-11 08:25:33 +0300 |
commit | 868f0e28290c7a33e8cb79bfe97ebdcbb756e048 (patch) | |
tree | 94509d2220d01585987f863b7907cd4d4c36713a | |
parent | 72ebd6751f9eb3f9b023a81f10b02e9a2c8c0acb (diff) | |
download | linux-868f0e28290c7a33e8cb79bfe97ebdcbb756e048.tar.gz linux-868f0e28290c7a33e8cb79bfe97ebdcbb756e048.tar.bz2 linux-868f0e28290c7a33e8cb79bfe97ebdcbb756e048.zip |
wilc1000: fix crash observed in AP mode with cfg80211_register_netdevice()
Monitor(mon.) interface is used for handling the AP mode and 'ieee80211_ptr'
reference is not getting set for it. Like earlier implementation,
use register_netdevice() instead of cfg80211_register_netdevice() which
expects valid 'ieee80211_ptr' reference to avoid the possible crash.
Fixes: 2fe8ef106238 ("cfg80211: change netdev registration/unregistration semantics")
Signed-off-by: Ajay Singh <ajay.kathat@microchip.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220504161924.2146601-3-ajay.kathat@microchip.com
-rw-r--r-- | drivers/net/wireless/microchip/wilc1000/mon.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/microchip/wilc1000/mon.c b/drivers/net/wireless/microchip/wilc1000/mon.c index 6bd63934c2d8..b5a1b65c087c 100644 --- a/drivers/net/wireless/microchip/wilc1000/mon.c +++ b/drivers/net/wireless/microchip/wilc1000/mon.c @@ -233,7 +233,7 @@ struct net_device *wilc_wfi_init_mon_interface(struct wilc *wl, wl->monitor_dev->netdev_ops = &wilc_wfi_netdev_ops; wl->monitor_dev->needs_free_netdev = true; - if (cfg80211_register_netdevice(wl->monitor_dev)) { + if (register_netdevice(wl->monitor_dev)) { netdev_err(real_dev, "register_netdevice failed\n"); free_netdev(wl->monitor_dev); return NULL; @@ -251,7 +251,7 @@ void wilc_wfi_deinit_mon_interface(struct wilc *wl, bool rtnl_locked) return; if (rtnl_locked) - cfg80211_unregister_netdevice(wl->monitor_dev); + unregister_netdevice(wl->monitor_dev); else unregister_netdev(wl->monitor_dev); wl->monitor_dev = NULL; |