From owner-cvs-src@FreeBSD.ORG Wed Sep 22 06:07:02 2004 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5533E16A4CF for ; Wed, 22 Sep 2004 06:07:02 +0000 (GMT) Received: from root.org (root.org [67.118.192.226]) by mx1.FreeBSD.org (Postfix) with SMTP id E5AF343D5C for ; Wed, 22 Sep 2004 06:07:01 +0000 (GMT) (envelope-from nate@root.org) Received: (qmail 44369 invoked by uid 1000); 22 Sep 2004 06:07:03 -0000 Date: Tue, 21 Sep 2004 23:07:03 -0700 (PDT) From: Nate Lawson To: Warner Losh In-Reply-To: <20040922060214.7754A16A548@hub.freebsd.org> Message-ID: <20040921230445.B44288@root.org> References: <20040922060214.7754A16A548@hub.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/dev/usb usb_port.h X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Sep 2004 06:07:02 -0000 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