Re: Spinlock recursion in usbnet + rndis-wlan

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

 



On Thu, 15 Jan 2009, Jeremy Williams wrote:

> Jeremy Williams <jeremy.williams@...> writes:
> 
> > 
> > I am currently using the rndis-wlan driver in 2.6.27 with a Linksys WUSB54GS 
> > USB wifi module.  When I attempt to bring the interface down or remove the 
> > rndis-wlan module, I am seeing a spinlock recursion bug when usbnet is 
> > attempting to unlink the urbs from the device.
> 
> 
> I have been poking into this more and discovered that those that are using EHCI
> compliant host controllers based off the ehci-hcd driver will not see this issue
> since completions are always performed asynchronously.  The urb_dequeue method
> in the HCD driver returns immediately and relies on the HCD irq routine to call
> the completion routine for the deleted urb thus avoiding the recursion.  
> 
> I have looked over all of the proprietary host controller drivers and the
> following have the potential to call usb_hcd_giveback_urb directly, thus
> resulting in the recursion.
> 
> isp116x-hcd.c
> isp1760-hcd.c
> r8a66597-hcd.c
> sl811-hcd.c
> u132-hcd.c
> 
> There is also the potential for the ochi-hcd driver to call usb_hcd_giveback_urb
> directly if the host controller is no longer running.
> 
> Is it considered acceptable to call usb_hcd_giveback_urb directly from the
> urb_dequeue routine or do these drivers need to be updated?

It is indeed acceptable.  In fact, it's even acceptable to call
usb_hcd_giveback_urb directly from the urb_enqueue routine, although I
don't think any HCDs do this (some peripheral drivers in the gadget
directory do the analogous thing).

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux