Merge "usb: host: Flush hub workqueue before stopping controller"

This commit is contained in:
Linux Build Service Account 2016-10-07 22:15:40 -07:00 committed by Gerrit - the friendly Code Review server
commit 5b3cec6473
3 changed files with 10 additions and 1 deletions

View file

@ -2990,6 +2990,9 @@ void usb_remove_hcd(struct usb_hcd *hcd)
cancel_work_sync(&hcd->wakeup_work);
#endif
/* handle any pending hub events before XHCI stops */
usb_flush_hub_wq();
mutex_lock(&usb_bus_list_lock);
usb_disconnect(&rhdev); /* Sets rhdev to NULL */
mutex_unlock(&usb_bus_list_lock);

View file

@ -610,6 +610,12 @@ void usb_kick_hub_wq(struct usb_device *hdev)
kick_hub_wq(hub);
}
void usb_flush_hub_wq(void)
{
flush_workqueue(hub_wq);
}
EXPORT_SYMBOL(usb_flush_hub_wq);
/*
* Let the USB core know that a USB 3.0 device has sent a Function Wake Device
* Notification, which indicates it had initiated remote wakeup.

View file

@ -502,7 +502,7 @@ extern void usb_hc_died(struct usb_hcd *hcd);
extern void usb_hcd_poll_rh_status(struct usb_hcd *hcd);
extern void usb_wakeup_notification(struct usb_device *hdev,
unsigned int portnum);
extern void usb_flush_hub_wq(void);
extern void usb_hcd_start_port_resume(struct usb_bus *bus, int portnum);
extern void usb_hcd_end_port_resume(struct usb_bus *bus, int portnum);