mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-11-12 04:22:27 +01:00
usb:hub set hub->change_bits when over-current happens
When we are doing compliance test with xHCI, we found that if we enable CONFIG_USB_SUSPEND and plug in a bad device which causes over-current condition to the root port, software will not be noticed. The reason is that current code don't set hub->change_bits in hub_activate() when over-current happens, and then hub_events() will not check the port status because it thinks nothing changed. If CONFIG_USB_SUSPEND is disabled, the interrupt pipe of the hub will report the change and set hub->event_bits, and then hub_events() will check what events happened.In this case over-current can be detected. Signed-off-by: Shen Guang <[email protected]> Acked-by: Alan Stern <[email protected]> Acked-by: Sarah Sharp <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
This commit is contained in:
1 parent
ac5166bcdb
commit
08d1dec6f4
1 file changed
+2
-1
@@ -1147,7 +1147,8 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)
|
||||
/* Tell khubd to disconnect the device or
|
||||
* check for a new connection
|
||||
*/
|
||||
if (udev || (portstatus & USB_PORT_STAT_CONNECTION))
|
||||
if (udev || (portstatus & USB_PORT_STAT_CONNECTION) ||
|
||||
(portstatus & USB_PORT_STAT_OVERCURRENT))
|
||||
set_bit(port1, hub->change_bits);
|
||||
|
||||
} else if (portstatus & USB_PORT_STAT_ENABLE) {
|
||||
|
||||
Reference in new issue
Block a user