Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'usb-3.6-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb

Pull USB fixes from Greg Kroah-Hartman:
"Here are two USB bugfixes for your 3.6-rc7 tree.

The OHCI fix has been reported a number of times and is a regression
from 3.5, and the patch that causes the regression was on the way to
the -stable trees before I was reminded (again) that this fix needed
to get to your tree soon.

The host controller bugfix was reported in older kernels as being
pretty easy to trigger, and has been tested by Red Hat and their
customers.

Both have been in the usb-next branch in the -next tree for a while
now, I just cherry-picked them out to get to you in time for the 3.6
release.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>"

* tag 'usb-3.6-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
USB: Fix race condition when removing host controllers
USB: ohci-at91: fix null pointer in ohci_hcd_at91_overcurrent_irq

+5 -6
+1 -1
drivers/usb/core/devices.c
··· 624 624 /* print devices for all busses */ 625 625 list_for_each_entry(bus, &usb_bus_list, bus_list) { 626 626 /* recurse through all children of the root hub */ 627 - if (!bus->root_hub) 627 + if (!bus_to_hcd(bus)->rh_registered) 628 628 continue; 629 629 usb_lock_device(bus->root_hub); 630 630 ret = usb_device_dump(&buf, &nbytes, &skip_bytes, ppos,
+2 -4
drivers/usb/core/hcd.c
··· 1011 1011 if (retval) { 1012 1012 dev_err (parent_dev, "can't register root hub for %s, %d\n", 1013 1013 dev_name(&usb_dev->dev), retval); 1014 - } 1015 - mutex_unlock(&usb_bus_list_lock); 1016 - 1017 - if (retval == 0) { 1014 + } else { 1018 1015 spin_lock_irq (&hcd_root_hub_lock); 1019 1016 hcd->rh_registered = 1; 1020 1017 spin_unlock_irq (&hcd_root_hub_lock); ··· 1020 1023 if (HCD_DEAD(hcd)) 1021 1024 usb_hc_died (hcd); /* This time clean up */ 1022 1025 } 1026 + mutex_unlock(&usb_bus_list_lock); 1023 1027 1024 1028 return retval; 1025 1029 }
+2 -1
drivers/usb/host/ohci-at91.c
··· 467 467 /* From the GPIO notifying the over-current situation, find 468 468 * out the corresponding port */ 469 469 at91_for_each_port(port) { 470 - if (gpio_to_irq(pdata->overcurrent_pin[port]) == irq) { 470 + if (gpio_is_valid(pdata->overcurrent_pin[port]) && 471 + gpio_to_irq(pdata->overcurrent_pin[port]) == irq) { 471 472 gpio = pdata->overcurrent_pin[port]; 472 473 break; 473 474 }