Re: [PATCH] 4.9.13 brcmfmac: fix use-after-free on resume
From: Daniel J Blueman <hidden>
Date: 2017-03-06 14:50:05
Also in:
linux-wireless
On 6 March 2017 at 21:00, Arend Van Spriel [off-list ref] wrote:
+ linux-wireless On 6-3-2017 8:14, Daniel J Blueman wrote:quoted
KASAN reported 'struct wireless_dev wdev' was read after being freed. Fix by freeing after the access.I would rather like to see the KASAN report, because something is off here. This function is called with wdev as a parameter so how can it be accessed after free here? brcmf_remove_interface() does not free the wdev nor the brcmf_cfg80211_vif instance which contains the wdev. Regards, Arendquoted
Signed-off-by: Daniel J Blueman <redacted>diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.cb/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c index de19c7c..aa0f470 100644--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c@@ -2288,12 +2288,13 @@ int brcmf_p2p_del_vif(struct wiphy *wiphy,struct wireless_dev *wdev) else err = 0; } - brcmf_remove_interface(vif->ifp, true); - brcmf_cfg80211_arm_vif_event(cfg, NULL); if (vif->wdev.iftype != NL80211_IFTYPE_P2P_DEVICE) p2p->bss_idx[P2PAPI_BSSCFG_CONNECTION].vif = NULL; + brcmf_remove_interface(vif->ifp, true); + brcmf_cfg80211_arm_vif_event(cfg, NULL); + return err; }
Sure, https://quora.org/kernel/brcmfmac/dmesg.txt vmlinux, cfg80211.o, brcmfmac.o and config are in the same path; this is against v4.9.13 stock. Thanks, Daniel -- Daniel J Blueman