PERFORCE change 120575 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Tue May 29 18:21:50 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=120575
Change 120575 by hselasky at 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 */
More information about the p4-projects
mailing list