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>
