| From: Piotr Haber <phaber@broadcom.com> |
| Date: Thu, 10 Jan 2013 11:20:48 +0100 |
| Subject: brcmsmac: increase timer reference count for new timers only |
| |
| commit a1fe52801a992e590cdaee2fb47a94bac9b5da90 upstream. |
| |
| On hardware reintialization reference count of |
| already existing timers would be increased again. |
| This leads to problems on module unloading. |
| |
| Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> |
| Reviewed-by: Hante Meuleman <meuleman@broadcom.com> |
| Reviewed-by: Arend van Spriel <arend@broadcom.com> |
| Signed-off-by: Piotr Haber <phaber@broadcom.com> |
| Signed-off-by: Arend van Spriel <arend@broadcom.com> |
| Signed-off-by: John W. Linville <linville@tuxdriver.com> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c | 7 ++++--- |
| 1 file changed, 4 insertions(+), 3 deletions(-) |
| |
| diff --git a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c |
| index 1fbd8ec..0f71d1d 100644 |
| --- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c |
| +++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c |
| @@ -1407,9 +1407,10 @@ void brcms_add_timer(struct brcms_timer *t, uint ms, int periodic) |
| #endif |
| t->ms = ms; |
| t->periodic = (bool) periodic; |
| - t->set = true; |
| - |
| - atomic_inc(&t->wl->callbacks); |
| + if (!t->set) { |
| + t->set = true; |
| + atomic_inc(&t->wl->callbacks); |
| + } |
| |
| ieee80211_queue_delayed_work(hw, &t->dly_wrk, msecs_to_jiffies(ms)); |
| } |