Christophe, Along with sending me dmesg with CONFIG_USB_DEBUG enabled against 2.6.33-r8, can you send me dmesg with this patch applied? I think this will avert the oops and let me see what's really going on with the device. I can wait until the weekend. :) Sarah Sharp diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c index 9bc95fe..13ba115 100644 --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c @@ -1437,6 +1437,7 @@ int usb_reset_configuration(struct usb_device *dev) int i, retval; struct usb_host_config *config; struct usb_hcd *hcd = bus_to_hcd(dev->bus); + int bad_config = 0; if (dev->state == USB_STATE_SUSPENDED) return -EHOSTUNREACH; @@ -1452,6 +1453,30 @@ int usb_reset_configuration(struct usb_device *dev) } config = dev->actconfig; + printk(KERN_DEBUG "Dev in state %u.\n", dev->state); + printk(KERN_DEBUG "Config %u has %u interfaces.\n", + config->desc.bConfigurationValue, + config->desc.bNumInterfaces); + for (i = 0; i < config->desc.bNumInterfaces; i++) { + if (config->interface[i] == NULL) { + printk(KERN_DEBUG "config->interface[%i] is NULL.\n", + i); + bad_config = 1; + continue; + } + printk(KERN_DEBUG "Config %u intf %u has %u altsettings.\n", + config->desc.bConfigurationValue, + config->desc.bNumInterfaces, + config->interface[i]->num_altsetting); + if (config->interface[i]->altsetting == NULL) { + printk(KERN_DEBUG "interface %i " + "altsetting array is NULL.\n", i); + bad_config = 1; + } + } + if (bad_config) + return -EPIPE; + retval = 0; mutex_lock(&hcd->bandwidth_mutex); /* Make sure we have enough bandwidth for each alternate setting 0 */ -- 1.6.3.3 -- 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