On Tue January 18 2011 22:06:43 Bob Copeland wrote:
> ath5k_reset must be called with sc->lock.  Since the tx queue
> watchdog runs in a workqueue and accesses sc, it's appropriate
> to just take the lock over the whole function.
> 
> Signed-off-by: Bob Copeland <m...@bobcopeland.com>
> ---
>  drivers/net/wireless/ath/ath5k/base.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/ath5k/base.c
> b/drivers/net/wireless/ath/ath5k/base.c index 019a74d..09ae4ef 100644
> --- a/drivers/net/wireless/ath/ath5k/base.c
> +++ b/drivers/net/wireless/ath/ath5k/base.c
> @@ -2294,6 +2294,8 @@ ath5k_tx_complete_poll_work(struct work_struct *work)
>       int i;
>       bool needreset = false;
> 
> +     mutex_lock(&sc->lock);
> +
>       for (i = 0; i < ARRAY_SIZE(sc->txqs); i++) {
>               if (sc->txqs[i].setup) {
>                       txq = &sc->txqs[i];
> @@ -2321,6 +2323,8 @@ ath5k_tx_complete_poll_work(struct work_struct *work)
>               ath5k_reset(sc, NULL, true);
>       }
> 
> +     mutex_unlock(&sc->lock);
> +
>       ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work,
>               msecs_to_jiffies(ATH5K_TX_COMPLETE_POLL_INT));
>  }

Acked-by: Bruno Randolf <b...@einfach.org>
_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

Reply via email to