Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 29 May 2007 18:21:49 GMT
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 120575 for review
Message-ID:  <200705291821.l4TILnDj086406@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200705291821.l4TILnDj086406>