Re: [patch 2.6.24-rc3] usb peripheral controller driver oops avoidance
Alan Stern <[email protected]>
| Newsgroups | gmane.linux.usb.devel |
|---|---|
| Message-ID | <[email protected]> |
On Mon, 19 Nov 2007, David Brownell wrote: > From: Patrik Sevallius <[email protected]> > > I'm having problem with oopses when rebooting, if I modprobe g_serial > and rmmod g_serial and do a reboot I get an oops in device_shutdown(). > The reason seems to be that usb_gadget_unregister_driver() doesn't do > enough cleanup. With this at91_udc patch I don't get the oops. > > Signed-off-by: Patrik Sevallius <[email protected]> > [ Same bug was in some other peripheral controller drivers; fixed. ] > Signed-off-by: David Brownell <[email protected]> > --- at91.orig/drivers/usb/gadget/dummy_hcd.c 2007-11-19 12:33:33.000000000 -0800 > +++ at91/drivers/usb/gadget/dummy_hcd.c 2007-11-19 12:36:05.000000000 -0800 > @@ -830,6 +830,7 @@ usb_gadget_unregister_driver (struct usb > spin_unlock_irqrestore (&dum->lock, flags); > > driver->unbind (&dum->gadget); > + dum->gadget.dev.driver = NULL; > dum->driver = NULL; > > device_release_driver (&dum->gadget.dev); Arghh, no! Setting dum->gadget.dev.driver to NULL will break the call to device_release_driver() just below. net2280 and dummy_hcd are different from the other device controllers in that they register the gadget driver with the driver core. Hence they don't need this extra action when unregistering a gadget driver. Alan Stern ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ [email protected] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel