Message ID | 1497268595-4836-1-git-send-email-arend.vanspriel@broadcom.com (mailing list archive) |
---|---|
State | Accepted |
Commit | a2b7a622d6292b693544d7c94bb5d11c3f4676f8 |
Delegated to: | Kalle Valo |
Headers | show |
Arend Van Spriel <arend.vanspriel@broadcom.com> wrote: > USB devices rely on queuing functionality provided by the fwsignal > module regardless the mode fwsignal is operating in. For this some > data structure needs to be reserved which is tied to the interface, > which is done by brcmf_fws_add_interface(). However, it checks the > mode. Replace that by checking result from brcmf_fws_queue_skbs(). > > Fixes: fc0471e3e884 ("brcmfmac: ignore interfaces when fwsignal is disabled") > Reviewed-by: Franky Lin <franky.lin@broadcom.com> > Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Same here, a short description of the bug would be nice.
On 13-06-17 08:13, Kalle Valo wrote: > Arend Van Spriel <arend.vanspriel@broadcom.com> wrote: > >> USB devices rely on queuing functionality provided by the fwsignal >> module regardless the mode fwsignal is operating in. For this some >> data structure needs to be reserved which is tied to the interface, >> which is done by brcmf_fws_add_interface(). However, it checks the >> mode. Replace that by checking result from brcmf_fws_queue_skbs(). Ok. Please add: """ Otherwise the driver will crash in a null pointer dereference when data is transmitted on the interface. """ Regards, Arend >> Fixes: fc0471e3e884 ("brcmfmac: ignore interfaces when fwsignal is disabled") >> Reviewed-by: Franky Lin <franky.lin@broadcom.com> >> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> > > Same here, a short description of the bug would be nice. >
Arend Van Spriel <arend.vanspriel@broadcom.com> wrote: > USB devices rely on queuing functionality provided by the fwsignal > module regardless the mode fwsignal is operating in. For this some > data structure needs to be reserved which is tied to the interface, > which is done by brcmf_fws_add_interface(). However, it checks the > mode. Replace that by checking result from brcmf_fws_queue_skbs(). > Otherwise the driver will crash in a null pointer dereference when > data is transmitted on the interface. > > Fixes: fc0471e3e884 ("brcmfmac: ignore interfaces when fwsignal is disabled") > Reviewed-by: Franky Lin <franky.lin@broadcom.com> > Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Patch applied to wireless-drivers.git, thanks. a2b7a622d629 brcmfmac: fix brcmf_fws_add_interface() for USB devices
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c index 72373e5..f59642b 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c @@ -2145,7 +2145,7 @@ void brcmf_fws_add_interface(struct brcmf_if *ifp) struct brcmf_fws_info *fws = drvr_to_fws(ifp->drvr); struct brcmf_fws_mac_descriptor *entry; - if (!ifp->ndev || fws->fcmode == BRCMF_FWS_FCMODE_NONE) + if (!ifp->ndev || !brcmf_fws_queue_skbs(fws)) return; entry = &fws->desc.iface[ifp->ifidx];