RE: [PATCH v2] usb: dwc2: call dwc2_is_controller_alive() under spinlock

Paul Zimmerman
2015-01-14T19:03:41Z

> From: Robert Baldyga [mailto:r.baldyga@samsung.com]
> Sent: Tuesday, January 13, 2015 10:46 PM
>
> This patch fixes bug described here:
> https://lkml.org/lkml/2014/12/22/185
>
> Signed-off-by: Robert Baldyga <r.baldyga@samsung.com>

Although I don't understand *why* this fixes Robert's issue, it's
certainly a harmless patch, so

Acked-by: Paul Zimmerman <paulz@synopsys.com>

But I suspect Felipe will want a better changelog, I don't think just
a URL is good enough.

--
Paul

> ---
>
> Changelog:
>
> v2:
> - fixed comment from Paul Zimmerman
>
> v1: https://lkml.org/lkml/2015/1/13/186
>
> drivers/usb/dwc2/core_intr.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/usb/dwc2/core_intr.c b/drivers/usb/dwc2/core_intr.c
> index ad43c5b..02e3e2d 100644
> --- a/drivers/usb/dwc2/core_intr.c
> +++ b/drivers/usb/dwc2/core_intr.c
> @@ -476,13 +476,13 @@ irqreturn_t dwc2_handle_common_intr(int irq, void *dev)
> u32 gintsts;
> irqreturn_t retval = IRQ_NONE;
>
> + spin_lock(&hsotg->lock);
> +
> if (!dwc2_is_controller_alive(hsotg)) {
> dev_warn(hsotg->dev, "Controller is dead\n");
> goto out;
> }
>
> - spin_lock(&hsotg->lock);
> -
> gintsts = dwc2_read_common_intr(hsotg);
> if (gintsts & ~GINTSTS_PRTINT)
> retval = IRQ_HANDLED;
> @@ -515,8 +515,8 @@ irqreturn_t dwc2_handle_common_intr(int irq, void *dev)
> }
> }
>
> - spin_unlock(&hsotg->lock);
> out:
> + spin_unlock(&hsotg->lock);
> return retval;
> }
> EXPORT_SYMBOL_GPL(dwc2_handle_common_intr);
> --
> 1.9.1