linux/drivers/net/wireless
Arend Van Spriel dca2307ed6 brcmfmac: fix double free upon register_netdevice() failure
The function brcmf_net_attach() can only fail when register_netdevice()
fails. When this happens register_netdevice() calls priv_destructor, ie.
brcmf_cfg80211_free_netdev() freeing the vif instance. Also upon this
failure brcmf_net_attach() calls free_netdev(). However, callers are also
doing cleanup resulting in double free. In some places they need netdev
private space as it holds parameters to communicate with the device. So
we want to do the cleanup only in callers of brcmf_net_attach() by making
the following changes:

 - set priv_destructor after register_netdevice() succeeds.
 - remove call to free_netdev() in brcmf_net_attach().
 - call free_netdev() in brcmf_net_detach() for unregistered netdev.
 - add free_netdev() if brcmf_net_attach() fails for a created interface.

Fixes: cf124db566 ("net: Fix inconsistent teardown and release of private netdev state.")
Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
2017-06-27 17:13:57 +03:00
..
admtek networking: make skb_push & __skb_push return void pointers 2017-06-16 11:48:40 -04:00
ath wireless-drivers-next patches for 4.13 2017-06-25 14:45:34 -04:00
atmel networking: introduce and use skb_put_data() 2017-06-16 11:48:37 -04:00
broadcom brcmfmac: fix double free upon register_netdevice() failure 2017-06-27 17:13:57 +03:00
cisco networking: make skb_put & friends return void pointers 2017-06-16 11:48:39 -04:00
intel wireless-drivers-next patches for 4.13 2017-06-25 14:45:34 -04:00
intersil networking: make skb_push & __skb_push return void pointers 2017-06-16 11:48:40 -04:00
marvell wireless-drivers-next patches for 4.13 2017-06-25 14:45:34 -04:00
mediatek networking: make skb_push & __skb_push return void pointers 2017-06-16 11:48:40 -04:00
quantenna wireless-drivers-next patches for 4.13 2017-06-25 14:45:34 -04:00
ralink networking: make skb_put & friends return void pointers 2017-06-16 11:48:39 -04:00
realtek wireless-drivers-next patches for 4.13 2017-06-25 14:45:34 -04:00
rsi wireless-drivers-next patches for 4.13 2017-06-25 14:45:34 -04:00
st networking: make skb_push & __skb_push return void pointers 2017-06-16 11:48:40 -04:00
ti wireless-drivers-next patches for 4.13 2017-06-25 14:45:34 -04:00
zydas networking: make skb_push & __skb_push return void pointers 2017-06-16 11:48:40 -04:00
Kconfig qtnfmac: introduce new FullMAC driver for Quantenna chipsets 2017-05-24 17:04:13 +03:00
mac80211_hwsim.c networking: make skb_push & __skb_push return void pointers 2017-06-16 11:48:40 -04:00
mac80211_hwsim.h mac80211_hwsim: fix command documentation indentation 2017-03-06 09:21:48 +01:00
Makefile qtnfmac: introduce new FullMAC driver for Quantenna chipsets 2017-05-24 17:04:13 +03:00
ray_cs.c ray_cs: Avoid reading past end of buffer 2017-05-22 18:27:22 +03:00
ray_cs.h
rayctl.h
rndis_wlan.c Another set of patches for -next: 2017-04-28 14:41:15 -04:00
wl3501_cs.c
wl3501.h