From owner-p4-projects@FreeBSD.ORG Tue May 29 18:21:50 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E807516A46B; Tue, 29 May 2007 18:21:49 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A569A16A421 for ; Tue, 29 May 2007 18:21:49 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 9544113C455 for ; Tue, 29 May 2007 18:21:49 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l4TILn74086417 for ; Tue, 29 May 2007 18:21:49 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l4TILnDj086406 for perforce@freebsd.org; Tue, 29 May 2007 18:21:49 GMT (envelope-from hselasky@FreeBSD.org) Date: Tue, 29 May 2007 18:21:49 GMT Message-Id: <200705291821.l4TILnDj086406@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 120575 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2007 18:21:50 -0000 http://perforce.freebsd.org/chv.cgi?CH=120575 Change 120575 by hselasky@hselasky_mini_itx on 2007/05/29 18:21:03 Fix a panic at USB host controller detach, due to a NULL pointer reference. Detaching an USB pcmcia card is still not safe due to some code inherited from the old USB stack in "usb.c". This will be fixed. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/ehci_pci.c#18 edit .. //depot/projects/usb/src/sys/dev/usb/ohci_pci.c#18 edit .. //depot/projects/usb/src/sys/dev/usb/uhci_pci.c#17 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/ehci_pci.c#18 (text+ko) ==== @@ -379,14 +379,15 @@ ehci_pci_detach(device_t self) { ehci_softc_t *sc = device_get_softc(self); + device_t bdev; usbd_config_td_stop(&(sc->sc_config_td)); if(sc->sc_bus.bdev) { - device_detach(sc->sc_bus.bdev); - device_delete_child(self, sc->sc_bus.bdev); - sc->sc_bus.bdev = NULL; + bdev = sc->sc_bus.bdev; + device_detach(bdev); + device_delete_child(self, bdev); } /* during module unload there are lots of children leftover */ ==== //depot/projects/usb/src/sys/dev/usb/ohci_pci.c#18 (text+ko) ==== @@ -342,14 +342,15 @@ ohci_pci_detach(device_t self) { ohci_softc_t *sc = device_get_softc(self); + device_t bdev; usbd_config_td_stop(&(sc->sc_config_td)); if(sc->sc_bus.bdev) { - device_detach(sc->sc_bus.bdev); - device_delete_child(self, sc->sc_bus.bdev); - sc->sc_bus.bdev = NULL; + bdev = sc->sc_bus.bdev; + device_detach(bdev); + device_delete_child(self, bdev); } /* during module unload there are lots of children leftover */ ==== //depot/projects/usb/src/sys/dev/usb/uhci_pci.c#17 (text+ko) ==== @@ -342,14 +342,15 @@ uhci_pci_detach(device_t self) { uhci_softc_t *sc = device_get_softc(self); + device_t bdev; usbd_config_td_stop(&(sc->sc_config_td)); if(sc->sc_bus.bdev) { - device_detach(sc->sc_bus.bdev); - device_delete_child(self, sc->sc_bus.bdev); - sc->sc_bus.bdev = NULL; + bdev = sc->sc_bus.bdev; + device_detach(bdev); + device_delete_child(self, bdev); } /* during module unload there are lots of children leftover */