From: navin patidar Date: Thu, 6 Sep 2012 11:19:50 +0000 (+0530) Subject: staging: usbip: vhci_hcd: fixed suspend-resume loop X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=107f04bbce331bf622b901ccec34a124e6b78584;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git staging: usbip: vhci_hcd: fixed suspend-resume loop USB autosuspend suspends vhci_hcd. In this process hcd_bus_suspend gets executed which puts vhci_hcd in suspend state and calls vhci_hub_status. vhci_hub_status function checks hub state and if it is in suspend state, usb_hcd_resume_root_hub gets executed which resumes hub and if hub is idle, again autosuspend puts it in suspend state and this goes on. vhci_hub_status should resume hub only when hub port is in suspend state and hub port status has changed. Signed-off-by: navin patidar Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/usbip/vhci_hcd.c b/drivers/staging/usbip/vhci_hcd.c index fd2b21a6c20b..bd79d1884c4b 100644 --- a/drivers/staging/usbip/vhci_hcd.c +++ b/drivers/staging/usbip/vhci_hcd.c @@ -220,7 +220,7 @@ static int vhci_hub_status(struct usb_hcd *hcd, char *buf) pr_info("changed %d\n", changed); - if (hcd->state == HC_STATE_SUSPENDED) + if ((hcd->state == HC_STATE_SUSPENDED) && (changed == 1)) usb_hcd_resume_root_hub(hcd); done: