USB: host: ohci-at91: resume: balance the clock start call
authorBoris Krasnovskiy <Boris.Krasnovskiy@lairdconnect.com>
Wed, 11 Sep 2019 06:41:54 +0000 (08:41 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 4 Oct 2019 12:16:53 +0000 (14:16 +0200)
There is a clock enable counter run away problem in resume ohci_at91. Code
enables clock that was never disabled in case of non wakeup interface. That
would make clock unstoppable in future.
Use proper alternative to start clocks only if they were stopped before.

Signed-off-by: Boris Krasnovskiy <Boris.Krasnovskiy@lairdconnect.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Link: https://lore.kernel.org/r/20190911064154.28633-4-nicolas.ferre@microchip.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/ohci-at91.c

index 85d67fe42d59bae4933b25c778ff1503fa45a513..513e483977439eff2aab756af191bfeba7aa27d7 100644 (file)
@@ -643,8 +643,8 @@ ohci_hcd_at91_drv_resume(struct device *dev)
 
        if (ohci_at91->wakeup)
                disable_irq_wake(hcd->irq);
-
-       at91_start_clock(ohci_at91);
+       else
+               at91_start_clock(ohci_at91);
 
        ohci_resume(hcd, false);