Search Linux Wireless

Re: race between rtl8187_stop and rtl8187_rx_cb?

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

 



On Friday 16 May 2008 16:01:06 Oliver Neukum wrote:
> rtl8187_stop() works by emptying a queue and unlinking urbs. But
> an urb finishing will be taken from the queue in rtl8187_rx_cb until
> it is resubmitted. Am I overlooking something or is there a window?
>
It appears that if you're unlucky, a rx urb can end up getting requeued after 
the dequeue loop in rtl8187_stop on a SMP system. Good catch. Doesn't look 
like it'll cause much trouble other than leaving urbs/skbs unfreed when the 
interface is down, but it's worth fixing. This requires information about 
whether or not the interface is started or stopped. Preferred way would be to 
set priv->mode = IEEE80211_IF_TYPE_INVALID in rtl8187_stop and priv->mode = 
IEEE80211_IF_TYPE_MNTR in rtl8187_start, so we can check for priv->mode == 
IEEE80211_IF_TYPE_INVALID before requeueing the urb in rtl8187_rx_cb. 

Thanks,
-Michael Wu

Attachment: signature.asc
Description: This is a digitally signed message part.


[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