Re: USB warning on cdc-acm device close

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

 



On Mon, 20 Jul 2009, Oliver Neukum wrote:

> Am Montag, 20. Juli 2009 09:56:48 schrieb Manuel Lauss:
> > Hi Oliver,
> >
> > While testing a CDC-ACM usb device I encoutered these warnings when
> > closing the ttyACM device:
> >
> > WARNING: at linux-2.6.git/drivers/usb/host/ehci-hcd.c:908
> > ehci_urb_dequeue+0x190/0x198()
> > Modules linked in:
> > Call Trace:
> > [<80107158>] dump_stack+0x8/0x34
> > [<8012a468>] warn_slowpath_common+0x70/0xb0
> > [<802e3968>] ehci_urb_dequeue+0x190/0x198
> > [<802ced70>] usb_hcd_unlink_urb+0xc0/0xf4
> > [<802d0320>] usb_kill_urb+0x54/0xfc
> > [<802ec9d8>] acm_port_down+0x21c/0x278
> > [<802ecd94>] acm_tty_close+0x5c/0xb8
> > [<8025f314>] tty_release_dev+0x17c/0x580
> > [<8025f728>] tty_release+0x10/0x20
> > [<8018f078>] __fput+0xf4/0x248
> > [<8018af78>] filp_close+0x68/0x98
> > [<8018b054>] sys_close+0xac/0xd8
> > [<80102260>] stack_done+0x20/0x3c
> 
> This points to an ehci problem. Alan?

Yes indeed.  This appears to have been caused by a recent change I
made.  Previously the WARN_ON could never be triggered, but now it can
and I didn't realize it.

Let me guess: This CDC-ACM device runs at full speed and it is behind a 
high-speed hub, right?

The patch below will certainly remove the warning; the question is 
whether ehci-hcd will continue to work correctly.  Some testing would 
be appreciated.  In particular, try to set up the conditions that would 
cause the warning, and afterward do "rmmod ehci-hcd".  That should 
cause any remaining errors to surface.

Alan Stern


Index: usb-2.6/drivers/usb/host/ehci-hcd.c
===================================================================
--- usb-2.6.orig/drivers/usb/host/ehci-hcd.c
+++ usb-2.6/drivers/usb/host/ehci-hcd.c
@@ -903,7 +903,8 @@ static int ehci_urb_dequeue(struct usb_h
 			/* already started */
 			break;
 		case QH_STATE_IDLE:
-			WARN_ON(1);
+			/* QH might be waiting for a Clear-TT-Buffer */
+			qh_completions(ehci, qh);
 			break;
 		}
 		break;

--
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