On Fri, Apr 23, 2004 at 11:03:42AM -0700, Greg KH wrote: > On Fri, Apr 23, 2004 at 10:19:53AM -0700, Greg KH wrote: > > On Fri, Apr 23, 2004 at 08:31:11AM -0700, Greg KH wrote: > > > > > > No, we need to oops, as that's a real bug. Can you post the whole oops > > > that was generated with this usb problem? I can't seem to duplicate > > > this here. > > > > Nevermind I dug up a device here that causes this problem. I'll track > > it down... > > Ok, here's a patch that fixes it for me. I was waiting for a good > reason to finally get rid of this fake usb_interface structure, and now > I have it :) > > Let me know if it solves the problem for you too and then I'll send it > off to Linus. > > Any objections Vojtech?
None. :) > > thanks, > > greg k-h > > > # USB: fix up fake usb_interface structure in hiddev > # > # This fixes a oops in the current kernel tree. > > diff -Nru a/drivers/usb/input/hiddev.c b/drivers/usb/input/hiddev.c > --- a/drivers/usb/input/hiddev.c Fri Apr 23 11:00:23 2004 > +++ b/drivers/usb/input/hiddev.c Fri Apr 23 11:00:23 2004 > @@ -53,7 +53,6 @@ > wait_queue_head_t wait; > struct hid_device *hid; > struct hiddev_list *list; > - struct usb_interface intf; > }; > > struct hiddev_list { > @@ -234,7 +233,7 @@ > static struct usb_class_driver hiddev_class; > static void hiddev_cleanup(struct hiddev *hiddev) > { > - usb_deregister_dev(&hiddev->intf, &hiddev_class); > + usb_deregister_dev(hiddev->hid->intf, &hiddev_class); > hiddev_table[hiddev->minor] = NULL; > kfree(hiddev); > } > @@ -775,7 +774,7 @@ > return -1; > memset(hiddev, 0, sizeof(struct hiddev)); > > - retval = usb_register_dev(&hiddev->intf, &hiddev_class); > + retval = usb_register_dev(hid->intf, &hiddev_class); > if (retval) { > err("Not able to get a minor for this device."); > kfree(hiddev); > @@ -784,13 +783,13 @@ > > init_waitqueue_head(&hiddev->wait); > > - hiddev->minor = hiddev->intf.minor; > - hiddev_table[hiddev->intf.minor - HIDDEV_MINOR_BASE] = hiddev; > + hiddev->minor = hid->intf->minor; > + hiddev_table[hid->intf->minor - HIDDEV_MINOR_BASE] = hiddev; > > hiddev->hid = hid; > hiddev->exist = 1; > > - hid->minor = hiddev->intf.minor; > + hid->minor = hid->intf->minor; > hid->hiddev = hiddev; > > return 0; > -- Vojtech Pavlik SuSE Labs, SuSE CR ------------------------------------------------------- This SF.net email is sponsored by: The Robotic Monkeys at ThinkGeek For a limited time only, get FREE Ground shipping on all orders of $35 or more. Hurry up and shop folks, this offer expires April 30th! http://www.thinkgeek.com/freeshipping/?cpg=12297 _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel