diff options
author | Hante Meuleman <meuleman@broadcom.com> | 2012-11-14 21:46:13 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-11-16 14:28:54 -0500 |
commit | df19e777e0587004bb926c73c7188e0d63f19372 (patch) | |
tree | 7cdeb9c2f745525d014b4dc6ff9bc8b1efe565ed | |
parent | 0b63cb71f1e6b74a6f68a9c7b10d823fd9914d0a (diff) |
brcmfmac: fix NULL pointer access in brcmf_fweh_detach()
brcmf_fweh_detach can be called while ifp is already NULL, due to
init error. Fix NULL pointer access by checking ifp.
Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/fweh.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/fweh.c b/drivers/net/wireless/brcm80211/brcmfmac/fweh.c index e1521afe6522..283acee1798b 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/fweh.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/fweh.c | |||
@@ -374,11 +374,13 @@ void brcmf_fweh_detach(struct brcmf_pub *drvr) | |||
374 | struct brcmf_if *ifp = drvr->iflist[0]; | 374 | struct brcmf_if *ifp = drvr->iflist[0]; |
375 | s8 eventmask[BRCMF_EVENTING_MASK_LEN]; | 375 | s8 eventmask[BRCMF_EVENTING_MASK_LEN]; |
376 | 376 | ||
377 | /* clear all events */ | 377 | if (ifp) { |
378 | memset(eventmask, 0, BRCMF_EVENTING_MASK_LEN); | 378 | /* clear all events */ |
379 | (void)brcmf_fil_iovar_data_set(ifp, "event_msgs", | 379 | memset(eventmask, 0, BRCMF_EVENTING_MASK_LEN); |
380 | eventmask, BRCMF_EVENTING_MASK_LEN); | 380 | (void)brcmf_fil_iovar_data_set(ifp, "event_msgs", |
381 | 381 | eventmask, | |
382 | BRCMF_EVENTING_MASK_LEN); | ||
383 | } | ||
382 | /* cancel the worker */ | 384 | /* cancel the worker */ |
383 | cancel_work_sync(&fweh->event_work); | 385 | cancel_work_sync(&fweh->event_work); |
384 | WARN_ON(!list_empty(&fweh->event_q)); | 386 | WARN_ON(!list_empty(&fweh->event_q)); |