Re: [PATCH] wusbcore: fix kernel panic when disconnecting a wireless USB->serial device

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

 




On Fri, 9 Aug 2013, Greg KH wrote:

> On Fri, Aug 09, 2013 at 09:52:13AM -0500, Thomas Pugliese wrote:
> > This patch fixes a kernel panic that can occur when disconnecting a 
> > wireless USB->serial device.  When the serial device disconnects, the 
> > device cleanup procedure ends up calling usb_hcd_disable_endpoint on the 
> > serial device's endpoints.  The wusbcore uses the ABORT_RPIPE command to 
> > abort all transfers on the given endpoint but it does not properly give 
> > back the URBs when the transfer results return from the HWA.  This patch 
> > prevents the transfer result processing code from bailing out when it sees 
> > a WA_XFER_STATUS_ABORTED result code so that these urbs are flushed 
> > properly by usb_hcd_disable_endpoint.  It also updates wa_urb_dequeue to 
> > handle the case where the endpoint has already been cleaned up when 
> > usb_kill_urb is called which is where the panic originally occurred.
> 
> This isn't unique to usb-serial drivers, is it?  Or are they the only
> ones that happen to trigger this issue?

Serial devices are the only ones I have seen which trigger the problem but 
any device that has a URB pending when the device disconnects could show 
it.

> 
> Should this go to older kernels as well to solve the problem?
> 

I don't think it is necessary for 3.10.x or older.  WUSB support was 
non-functional to the point that this bug would never be encountered on 
those kernels.  It could be useful for 3.11 though.

> thanks,
> 
> greg k-h
> 
--
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