]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
brcm80211: fmac: use spinlock calls saving irq flags in brcmf_enq_event()
authorArend van Spriel <arend@broadcom.com>
Thu, 9 Feb 2012 20:09:07 +0000 (21:09 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 22 Feb 2012 19:48:53 +0000 (14:48 -0500)
This function is executed within irq context. The call spin_unlock_irq
does enable interrupts which is not desired in the irq context. This patch
replaces them using the spin_loc_irqsave and spin_unlock_irqrestore
functions.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Kan Yan <kanyan@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c

index 285fa19e881ddf791c73f91cf08af644eb3748e5..15d7f00513be9e052f8b915782542c7b9f574ef9 100644 (file)
@@ -3308,6 +3308,7 @@ brcmf_enq_event(struct brcmf_cfg80211_priv *cfg_priv, u32 event,
 {
        struct brcmf_cfg80211_event_q *e;
        s32 err = 0;
+       ulong flags;
 
        e = kzalloc(sizeof(struct brcmf_cfg80211_event_q), GFP_ATOMIC);
        if (!e)
@@ -3316,9 +3317,9 @@ brcmf_enq_event(struct brcmf_cfg80211_priv *cfg_priv, u32 event,
        e->etype = event;
        memcpy(&e->emsg, msg, sizeof(struct brcmf_event_msg));
 
-       spin_lock_irq(&cfg_priv->evt_q_lock);
+       spin_lock_irqsave(&cfg_priv->evt_q_lock, flags);
        list_add_tail(&e->evt_q_list, &cfg_priv->evt_q_list);
-       spin_unlock_irq(&cfg_priv->evt_q_lock);
+       spin_unlock_irqrestore(&cfg_priv->evt_q_lock, flags);
 
        return err;
 }