On Fri, 1 Jun 2007, Andrew Morton wrote:

> > I'm using vanilla kernel 2.6.22-rc3 (and I try'ed with 2.6.21-fc7 fedora 
> > kernel) with a huawei e220 3g, and when I open amule after sometime kernel 
> > panics: 
> > _
> > list_add corruption. prev->next should be next (f7d28794), but was f0df8ed4 
> > (prev=f0df8ed4)
> > Kernel Bug at lib/list_debug.c:33

> > CPU: 0
> > EIP: 0060:[<c04ddda5>] Not tainted VLI
> > EFLAGS: 00010092 (2.6.22_rc3 #1)
> > EIP is at __list_add+0x48/0x5c
> > eax: 00000061___ebx: f0df8ed4___ecx: c06ced10___edx:00000086
> > esi: f0df8ed4___edi: 00000246___ebp: f7d28788___esp: c0750e68
> > ds: 007b________es: 007b________fs: 00d8________gs: 0033________ss: 0068
> > Process Amule (pid: 9719, ti=c0750000 task=d1da38b0 task.ti=c7899000)
> > Satck: 
> > _co69461e________f7d28794________f0df8ed4________f0df8ed4________f0df8ec0________ffffffff________c0558f09________
> > 00000040
> > ________00000021________f9316564________c180a120________00000000________d4884800________00000020________f7ece200________000000fc
> > ________f7a45000________db1c8000________00000001________00000040________f90b8da0________f7a45000________d3740000________c409e470
> > Call Trace:
> > ________[<c0558f09>] usb_hcd_sumit_urb+0x9a/0x778
> > ________[<f9316564>] ppp_async_push+0x38c/0x398 [ppp_async]

> Could be a ppp bug, more likely a USB bug, but that's a well-tested code
> path.
> 
> Greg? Anyone?  ANy idea where to start looking?

Maybe the serial device driver is submitting an URB that is already in 
use.  This patch might catch the error.

Alan Stern



Index: usb-2.6/drivers/usb/core/urb.c
===================================================================
--- usb-2.6.orig/drivers/usb/core/urb.c
+++ usb-2.6/drivers/usb/core/urb.c
@@ -233,6 +233,12 @@ int usb_submit_urb(struct urb *urb, gfp_
                        || dev->state == USB_STATE_SUSPENDED)
                return -EHOSTUNREACH;
 
+       /* Not a precise test, but useful for debugging */
+       if (urb->status == -EINPROGRESS) {
+               WARN_ON(1);
+               return -EBUSY;
+       }
+
        urb->status = -EINPROGRESS;
        urb->actual_length = 0;
 


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to