cvs commit: src/sys/dev/usb usb_port.h
Nate Lawson
nate at root.org
Wed Sep 22 11:17:43 PDT 2004
M. Warner Losh wrote:
> In message: <20040921230445.B44288 at root.org>
> Nate Lawson <nate at 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?
>
> I don't think this is the right place to do that.
Now I'm the one who is confused. I'm talking about the call to free()
right before device_detach(). See above. I meant I think the
device_detach() should go before the free().
> : 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.
>
> resources aren't stored in ivars. usb devices do not use resources.
I see, it's contained in the *HCI driver. But strangely, it sets its
own ivars.
> : It would also make sense to do this as the exact reverse of
> : device creation.
>
> I don't understand this.
Devices need to be detached before being deleted. If they have ivars,
it makes sense to kill those after detach, not before.
--
Nate
More information about the cvs-src
mailing list