Explorar el Código

staging: ath6kl: use free_netdev(netdev) instead of kfree()

It is not guaranteed that free_netdev() is macro.
Freeing netdev without free_netdev() leads to net, tx leaks.
I might lead to dereferencing freed pointer.

Signed-off-by: Vasiliy Kulikov <segooon@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Vasiliy Kulikov hace 14 años
padre
commit
8db3271cb2
Se han modificado 1 ficheros con 0 adiciones y 8 borrados
  1. 0 8
      drivers/staging/ath6kl/os/linux/ar6000_drv.c

+ 0 - 8
drivers/staging/ath6kl/os/linux/ar6000_drv.c

@@ -2143,11 +2143,7 @@ ar6000_destroy(struct net_device *dev, unsigned int unregister)
         unregister_netdev(dev);
         unregister_netdev(dev);
         is_netdev_registered = 0;
         is_netdev_registered = 0;
     }
     }
-#ifndef free_netdev
-    kfree(dev);
-#else
     free_netdev(dev);
     free_netdev(dev);
-#endif
 
 
 #ifdef ATH6K_CONFIG_CFG80211
 #ifdef ATH6K_CONFIG_CFG80211
     ar6k_cfg80211_deinit(ar);
     ar6k_cfg80211_deinit(ar);
@@ -6429,11 +6425,7 @@ A_STATUS ar6000_remove_ap_interface(AR_SOFTC_T *ar)
         ar6000_stop_ap_interface(ar);
         ar6000_stop_ap_interface(ar);
 
 
         unregister_netdev(arApNetDev);
         unregister_netdev(arApNetDev);
-#ifndef free_netdev
-        kfree(arApNetDev);
-#else
         free_netdev(apApNetDev);
         free_netdev(apApNetDev);
-#endif
 
 
         A_PRINTF("Remove AP interface\n");
         A_PRINTF("Remove AP interface\n");
     }
     }