From 789f8720fc74c8e8d7bf101a5578e7b3b25b336c Mon Sep 17 00:00:00 2001 From: Alan Stern Date: Wed, 26 Sep 2012 13:09:53 -0400 Subject: [PATCH] --- yaml --- r: 326143 b: refs/heads/master c: 0a2314035cab62cafc38ea11ec5b6f95cf347b38 h: refs/heads/master i: 326141: e36a6888e1559a8868e7675498ce972119eab7f8 326139: d7cb69684763eff4567b3275138415ffa5457cbd 326135: d8f34a7e4f3f5261bc21ea87fc7ce980ade837d8 326127: 5c939010466ed6dc815b6b92d7401837618e680b 326111: 26e5d29d3e48b3a783fde953eb4a1ef5d597de6a 326079: f8af581fa15b35d92d4e5e376cd214c4f0a55a8f 326015: 8b421aa93895fa0d7217b0be251d8af15bf2c56d 325887: dbd92ccf4301e46165bb08cf2a4b8d6831f02b4a 325631: 5c660b610b258c62739e58ceb18d238d19932b36 v: v3 --- [refs] | 2 +- trunk/drivers/usb/core/devices.c | 2 +- trunk/drivers/usb/core/hcd.c | 6 ++---- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 331189e3fcc3..137f393ca292 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 655db7980596f0ad4f15f8f4c51beb3e705762de +refs/heads/master: 0a2314035cab62cafc38ea11ec5b6f95cf347b38 diff --git a/trunk/drivers/usb/core/devices.c b/trunk/drivers/usb/core/devices.c index f4ead1296820..f460de31acee 100644 --- a/trunk/drivers/usb/core/devices.c +++ b/trunk/drivers/usb/core/devices.c @@ -623,7 +623,7 @@ static ssize_t usb_device_read(struct file *file, char __user *buf, /* print devices for all busses */ list_for_each_entry(bus, &usb_bus_list, bus_list) { /* recurse through all children of the root hub */ - if (!bus->root_hub) + if (!bus_to_hcd(bus)->rh_registered) continue; usb_lock_device(bus->root_hub); ret = usb_device_dump(&buf, &nbytes, &skip_bytes, ppos, diff --git a/trunk/drivers/usb/core/hcd.c b/trunk/drivers/usb/core/hcd.c index 35b52f6e1c5e..1e741bca0265 100644 --- a/trunk/drivers/usb/core/hcd.c +++ b/trunk/drivers/usb/core/hcd.c @@ -1011,10 +1011,7 @@ static int register_root_hub(struct usb_hcd *hcd) if (retval) { dev_err (parent_dev, "can't register root hub for %s, %d\n", dev_name(&usb_dev->dev), retval); - } - mutex_unlock(&usb_bus_list_lock); - - if (retval == 0) { + } else { spin_lock_irq (&hcd_root_hub_lock); hcd->rh_registered = 1; spin_unlock_irq (&hcd_root_hub_lock); @@ -1023,6 +1020,7 @@ static int register_root_hub(struct usb_hcd *hcd) if (HCD_DEAD(hcd)) usb_hc_died (hcd); /* This time clean up */ } + mutex_unlock(&usb_bus_list_lock); return retval; }