wilc1000: fix crash observed in AP mode with cfg80211_register_netdevice()
authorAjay Singh <ajay.kathat@microchip.com>
Wed, 4 May 2022 16:19:26 +0000 (16:19 +0000)
committerKalle Valo <kvalo@kernel.org>
Wed, 11 May 2022 05:25:33 +0000 (08:25 +0300)
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
drivers/net/wireless/microchip/wilc1000/mon.c

index 6bd63934c2d8447fe8e6cbc1245c1398dfd0cd3a..b5a1b65c087cab98e190145d56a569b43a92bfd1 100644 (file)
@@ -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;