cvs commit: src/sys/dev/usb usb_port.h

Nate Lawson nate at root.org
Tue Sep 21 23:07:02 PDT 2004


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.

-Nate


More information about the cvs-src mailing list