Search Linux Wireless

Re: [PATCH 2/3] rt2x00: fix order of entry flags modification

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Aug 10, 2011 at 3:32 PM, Stanislaw Gruszka <sgruszka@xxxxxxxxxx> wrote:
> In rt2800usb_work_txdone we check flags in order:
>
> - ENTRY_OWNER_DEVICE_DATA
> - ENTRY_DATA_STATUS_PENDING
> - ENTRY_DATA_IO_FAILED
>
> Modify flags in separate order in rt2x00usb_interrupt_txdone, to avoid
> processing entries in _txdone with wrong flags or skip processing
> ready entries.
>
> Reported-by: Justin Piszcz <jpiszcz@xxxxxxxxxxxxxxx>
> Cc: stable@xxxxxxxxxx
> Signed-off-by: Stanislaw Gruszka <sgruszka@xxxxxxxxxx>

Acked-by: Ivo van Doorn <IvDoorn@xxxxxxxxx>

> ---
>  drivers/net/wireless/rt2x00/rt2x00usb.c |   17 +++++++----------
>  1 files changed, 7 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
> index b6b4542..7fbb55c 100644
> --- a/drivers/net/wireless/rt2x00/rt2x00usb.c
> +++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
> @@ -262,23 +262,20 @@ static void rt2x00usb_interrupt_txdone(struct urb *urb)
>        struct queue_entry *entry = (struct queue_entry *)urb->context;
>        struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
>
> -       if (!test_and_clear_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags))
> +       if (!test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags))
>                return;
> -
> -       if (rt2x00dev->ops->lib->tx_dma_done)
> -               rt2x00dev->ops->lib->tx_dma_done(entry);
> -
> -       /*
> -        * Report the frame as DMA done
> -        */
> -       rt2x00lib_dmadone(entry);
> -
>        /*
>         * Check if the frame was correctly uploaded
>         */
>        if (urb->status)
>                set_bit(ENTRY_DATA_IO_FAILED, &entry->flags);
> +       /*
> +        * Report the frame as DMA done
> +        */
> +       rt2x00lib_dmadone(entry);
>
> +       if (rt2x00dev->ops->lib->tx_dma_done)
> +               rt2x00dev->ops->lib->tx_dma_done(entry);
>        /*
>         * Schedule the delayed work for reading the TX status
>         * from the device.
> --
> 1.7.1
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux