Date: Wed, 22 Sep 2004 09:06:20 -0600 (MDT) From: "M. Warner Losh" <imp@bsdimp.com> To: nate@root.org Cc: cvs-all@freebsd.org Subject: Re: cvs commit: src/sys/dev/usb usb_port.h Message-ID: <20040922.090620.102653766.imp@bsdimp.com> In-Reply-To: <20040921230445.B44288@root.org> References: <20040922060214.7754A16A548@hub.freebsd.org> <20040921230445.B44288@root.org>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20040921230445.B44288@root.org> Nate Lawson <nate@root.org> writes: : On Wed, 22 Sep 2004, Warner Losh wrote: : > imp 2004-09-22 06:02:10 UTC : > : > FreeBSD src repository : > : > Modified files: : > sys/dev/usb usb_port.h : > Log: : > Add a temporary workaround to the panic on boot with hub attached and : > panic on hub detach bugs that have been reported. This work around : > detaches the device before deleting it. This changes the detach order : > from in-order to pre-order. This avoids uhub's deleting the children : > after its subdevs has been deleted. : > : > Revision Changes Path : > 1.68 +1 -0 src/sys/dev/usb/usb_port.h : > : > : > Index: src/sys/dev/usb/usb_port.h : > diff -u src/sys/dev/usb/usb_port.h:1.67 src/sys/dev/usb/usb_port.h:1.68 : > --- src/sys/dev/usb/usb_port.h:1.67 Sun Aug 15 23:39:18 2004 : > +++ src/sys/dev/usb/usb_port.h Wed Sep 22 06:02:10 2004 : > @@ -422,6 +422,7 @@ : > #define config_detach(dev, flag) \ : > do { \ : > free(device_get_ivars(dev), M_USB); \ : > + device_detach(dev); \ : > device_delete_child(device_get_parent(dev), dev); \ : > } while (0); : : Shouldn't you free the ivars after detaching the device? If the device : releases resources in its attach routine, you may be walking the resource : list stored in the ivars but that will already have been freed with the : above code. It would also make sense to do this as the exact reverse of : device creation. Also, the code committed to the tree passes a pointer to the ivar from a variable on the stack. This, under the theory that it is used only during probe/attach. There are a number of parallel arrays to subdevs[] that could (and likely should) be converted to being stored as ivars to make detach easier.... Warner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040922.090620.102653766.imp>