On Sat, 20 Mar 2004, Sean Neakums wrote:

> Below is the SysRq-T output, attached is the strace output.
> 
> Mar 20 20:36:53 revox kernel: gphoto2       D E8D67E64     0   927    926            
>          (NOTLB)
> Mar 20 20:36:53 revox kernel: e8d67e48 00000082 c0405540 e8d67e64 ee8ab960 00000000 
> 00000000 c04475a0 
> Mar 20 20:36:53 revox kernel:        ef4f8a74 e8eb6580 000084d7 90320016 00000063 
> e8dd2980 e8dd2b30 e8d67000 
> Mar 20 20:36:53 revox kernel:        e8d67000 e8d67ecc e8d67e9c c0118679 00000000 
> e8dd2980 c01183d0 00000000 
> Mar 20 20:36:53 revox kernel: Call Trace:
> Mar 20 20:36:53 revox kernel:  [wait_for_completion+153/272] 
> wait_for_completion+0x99/0x110
> Mar 20 20:36:53 revox kernel:  [default_wake_function+0/16] 
> default_wake_function+0x0/0x10
> Mar 20 20:36:53 revox kernel:  [default_wake_function+0/16] 
> default_wake_function+0x0/0x10
> Mar 20 20:36:53 revox kernel:  [device_del+105/160] device_del+0x69/0xa0
> Mar 20 20:36:53 revox kernel:  [usb_disable_device+231/320] 
> usb_disable_device+0xe7/0x140
> Mar 20 20:36:53 revox kernel:  [usb_set_configuration+157/672] 
> usb_set_configuration+0x9d/0x2a0
> Mar 20 20:36:53 revox kernel:  [do_notify_parent+319/1440] 
> do_notify_parent+0x13f/0x5a0
> Mar 20 20:36:53 revox kernel:  [usbdev_ioctl+358/816] usbdev_ioctl+0x166/0x330
> Mar 20 20:36:53 revox kernel:  [recalc_task_prio+140/416] recalc_task_prio+0x8c/0x1a0
> Mar 20 20:36:53 revox kernel:  [schedule+95/1536] schedule+0x5f/0x600
> Mar 20 20:36:53 revox kernel:  [file_ioctl+103/416] file_ioctl+0x67/0x1a0
> Mar 20 20:36:53 revox kernel:  [sys_ioctl+264/608] sys_ioctl+0x108/0x260
> Mar 20 20:36:53 revox kernel:  [syscall_call+7/11] syscall_call+0x7/0xb

Okay, this is pretty clear.  It does indeed look like you're running 
across the same problem as Matthias Andree.  Try out the patch below.

Alan Stern


===== devio.c 1.88 vs edited =====
--- 1.88/drivers/usb/core/devio.c       Wed Mar 17 14:16:46 2004
+++ edited/drivers/usb/core/devio.c     Fri Mar 19 10:41:57 2004
@@ -753,7 +753,11 @@
 
        if (get_user(u, (unsigned int __user *)arg))
                return -EFAULT;
-       return usb_set_configuration(ps->dev, u);
+       if (ps->dev->actconfig &&
+                       ps->dev->actconfig->desc.bConfigurationValue == u)
+               return usb_reset_configuration(ps->dev);
+       else
+               return usb_set_configuration(ps->dev, u);
 }
 
 static int proc_submiturb(struct dev_state *ps, void __user *arg)




-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to