summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/controller
diff options
context:
space:
mode:
authorthompsa <thompsa@FreeBSD.org>2009-04-22 17:08:10 +0000
committerthompsa <thompsa@FreeBSD.org>2009-04-22 17:08:10 +0000
commit30310ed8e002b62a92673e2485607da8830bcb85 (patch)
treead3cdcdae8a41de670d6abe848c78cdc9bd26fd1 /sys/dev/usb/controller
parentc2a5eaf2ddb3fb9f79b11ad4d29a69313faff288 (diff)
downloadFreeBSD-src-30310ed8e002b62a92673e2485607da8830bcb85.zip
FreeBSD-src-30310ed8e002b62a92673e2485607da8830bcb85.tar.gz
MFp4 //depot/projects/usb@160706
Resolve possible device side mode deadlock by creating another thread. Submitted by: Hans Petter Selasky
Diffstat (limited to 'sys/dev/usb/controller')
-rw-r--r--sys/dev/usb/controller/usb_controller.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/dev/usb/controller/usb_controller.c b/sys/dev/usb/controller/usb_controller.c
index 474cbe5..cf30051 100644
--- a/sys/dev/usb/controller/usb_controller.c
+++ b/sys/dev/usb/controller/usb_controller.c
@@ -169,6 +169,10 @@ usb2_detach(device_t dev)
usb2_proc_free(&bus->explore_proc);
+ /* Get rid of control transfer process */
+
+ usb2_proc_free(&bus->control_xfer_proc);
+
return (0);
}
@@ -412,6 +416,10 @@ usb2_attach_sub(device_t dev, struct usb2_bus *bus)
&bus->bus_mtx, pname, USB_PRI_MED)) {
printf("WARNING: Creation of USB explore "
"process failed.\n");
+ } else if (usb2_proc_create(&bus->control_xfer_proc,
+ &bus->bus_mtx, pname, USB_PRI_MED)) {
+ printf("WARNING: Creation of USB control transfer "
+ "process failed.\n");
} else {
/* Get final attach going */
USB_BUS_LOCK(bus);
OpenPOWER on IntegriCloud