diff options
author | thompsa <thompsa@FreeBSD.org> | 2009-04-22 17:07:53 +0000 |
---|---|---|
committer | thompsa <thompsa@FreeBSD.org> | 2009-04-22 17:07:53 +0000 |
commit | 5231ef1439e966728a0772ba8f5b6ca06d20bcf3 (patch) | |
tree | 5942084a336dab5270d641e447751934b56ab75c /sys/dev/usb/controller | |
parent | d9f29f24a6c9269725359671c325a86ff98f2c77 (diff) | |
download | FreeBSD-src-5231ef1439e966728a0772ba8f5b6ca06d20bcf3.zip FreeBSD-src-5231ef1439e966728a0772ba8f5b6ca06d20bcf3.tar.gz |
MFp4 //depot/projects/usb@160413
Use direct reference to parent high-speed HUB instead of indirect, due to
pointer clearing race at detach of parent USB HUB.
Reported by: kientzle
Submitted by: Hans Petter Selasky
PR: usb/133545
Diffstat (limited to 'sys/dev/usb/controller')
-rw-r--r-- | sys/dev/usb/controller/ehci.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/usb/controller/ehci.c b/sys/dev/usb/controller/ehci.c index 8be6bec..e3f42d4 100644 --- a/sys/dev/usb/controller/ehci.c +++ b/sys/dev/usb/controller/ehci.c @@ -3651,8 +3651,8 @@ ehci_pipe_init(struct usb2_device *udev, struct usb2_endpoint_descriptor *edesc, if ((udev->speed != USB_SPEED_HIGH) && ((udev->hs_hub_addr == 0) || (udev->hs_port_no == 0) || - (udev->bus->devices[udev->hs_hub_addr] == NULL) || - (udev->bus->devices[udev->hs_hub_addr]->hub == NULL))) { + (udev->parent_hs_hub == NULL) || + (udev->parent_hs_hub->hub == NULL))) { /* We need a transaction translator */ goto done; } |