diff options
author | Dan Carpenter <dan.carpenter@oracle.com> | 2014-11-28 04:43:40 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-12-01 15:57:21 -0500 |
commit | c0fb754bd81fafcd63644d5482ba9669d3e4fe9c (patch) | |
tree | a50074dec58a074476e5b5edbecb3a518c983bb3 | |
parent | dc50a52a36f459e0e3bed492d72a78bf64772c25 (diff) |
brcmsmac: NULL dereferences in brcms_c_detach_mfree()
The brcms_c_attach_malloc() function can call this with a NULL
"wlc->corestate" or "wlc->hw".
Also I threw in a bonus cleanup by deleting an obvious comment and a
no-op NULL assignment. :)
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmsmac/main.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c index 738cfaca1e0f..a104d7ac3796 100644 --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c | |||
@@ -445,18 +445,18 @@ static void brcms_c_detach_mfree(struct brcms_c_info *wlc) | |||
445 | kfree(wlc->protection); | 445 | kfree(wlc->protection); |
446 | kfree(wlc->stf); | 446 | kfree(wlc->stf); |
447 | kfree(wlc->bandstate[0]); | 447 | kfree(wlc->bandstate[0]); |
448 | kfree(wlc->corestate->macstat_snapshot); | 448 | if (wlc->corestate) |
449 | kfree(wlc->corestate->macstat_snapshot); | ||
449 | kfree(wlc->corestate); | 450 | kfree(wlc->corestate); |
450 | kfree(wlc->hw->bandstate[0]); | 451 | if (wlc->hw) |
452 | kfree(wlc->hw->bandstate[0]); | ||
451 | kfree(wlc->hw); | 453 | kfree(wlc->hw); |
452 | if (wlc->beacon) | 454 | if (wlc->beacon) |
453 | dev_kfree_skb_any(wlc->beacon); | 455 | dev_kfree_skb_any(wlc->beacon); |
454 | if (wlc->probe_resp) | 456 | if (wlc->probe_resp) |
455 | dev_kfree_skb_any(wlc->probe_resp); | 457 | dev_kfree_skb_any(wlc->probe_resp); |
456 | 458 | ||
457 | /* free the wlc */ | ||
458 | kfree(wlc); | 459 | kfree(wlc); |
459 | wlc = NULL; | ||
460 | } | 460 | } |
461 | 461 | ||
462 | static struct brcms_bss_cfg *brcms_c_bsscfg_malloc(uint unit) | 462 | static struct brcms_bss_cfg *brcms_c_bsscfg_malloc(uint unit) |