* Grygorii Strashko <[email protected]> [161212 11:38]:
> Now races can happen between interrupt handler execution and PM runtime in
> error handling code path in probe and in dwc3_omap_remove() which will lead
> to system crash:
> 
> in probe:
> ...
>  err1:
>       pm_runtime_put_sync(dev);
> ^^ PM runtime can race with IRQ handler when deferred probing happening
>    due to extcon
>       pm_runtime_disable(dev);
> 
>       return ret;
> 
> in dwc3_omap_remove:
> ...
>       dwc3_omap_disable_irqs(omap);
> ^^ IRQs are disabled in HW, but handler may still run
>       of_platform_depopulate(omap->dev);
>       pm_runtime_put_sync(&pdev->dev);
> ^^ PM runtime can race with IRQ handler
>       pm_runtime_disable(&pdev->dev);
> 
>       return 0;
> 
> So, OMAP DWC3 IRQ need to be disabled before calling
> pm_runtime_put() in probe and in dwc3_omap_remove().

Acked-by: Tony Lindgren <[email protected]>
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to