Commit 6d421e54 authored by Arend van Spriel's avatar Arend van Spriel Committed by John W. Linville

brcmfmac: use lock in brcmf_fws_del_interface()

When deleting an interface in firmware-signalling module it will
clear any destination descriptors. To avoid concurrency issues it
should take the lock using brcmf_fws_lock().
Reviewed-by: default avatarHante Meuleman <meuleman@broadcom.com>
Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent a5e9d805
...@@ -1821,14 +1821,17 @@ void brcmf_fws_add_interface(struct brcmf_if *ifp) ...@@ -1821,14 +1821,17 @@ void brcmf_fws_add_interface(struct brcmf_if *ifp)
void brcmf_fws_del_interface(struct brcmf_if *ifp) void brcmf_fws_del_interface(struct brcmf_if *ifp)
{ {
struct brcmf_fws_mac_descriptor *entry = ifp->fws_desc; struct brcmf_fws_mac_descriptor *entry = ifp->fws_desc;
ulong flags;
brcmf_dbg(TRACE, "enter: idx=%d\n", ifp->bssidx); brcmf_dbg(TRACE, "enter: idx=%d\n", ifp->bssidx);
if (!entry) if (!entry)
return; return;
brcmf_fws_lock(ifp->drvr, flags);
ifp->fws_desc = NULL; ifp->fws_desc = NULL;
brcmf_fws_clear_mac_descriptor(entry); brcmf_fws_clear_mac_descriptor(entry);
brcmf_fws_cleanup(ifp->drvr->fws, ifp->ifidx); brcmf_fws_cleanup(ifp->drvr->fws, ifp->ifidx);
brcmf_fws_unlock(ifp->drvr, flags);
} }
static void brcmf_fws_dequeue_worker(struct work_struct *worker) static void brcmf_fws_dequeue_worker(struct work_struct *worker)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment