Re: [PATCH v2 1/2] usb: dwc3: gadget: Avoid controller stop in .suspend if !softconnect

Thinh Nguyen
2023-05-02T21:19:02Z

On Tue, May 02, 2023, Roger Quadros wrote:
> If softconnect is not set it means the controller has not started,
> so no point in stopping it in dwc3_gadget_suspend()
>
> Cc: stable@vger.kernel.org # 5.16
> Fixes: 8217f07a5023 ("usb: dwc3: gadget: Avoid starting DWC3 gadget during UDC unbind")

If the reason for this patch is as mentioned in the commit message, then
I don't think this is a fix patch that needs to be backported to stable.
The reason why we needed to check both dwc->gadget_driver and
dwc->softconnect is because of a potential race between resume and
unbind. Would there be a similar case in dwc_gadget_suspend where a
potential race may occur? If not, I don't think we need this patch.

Thanks,
Thinh

> Signed-off-by: Roger Quadros <rogerq@kernel.org>
> ---
> drivers/usb/dwc3/gadget.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> index c0ca4d12f95d..b5170374cd18 100644
> --- a/drivers/usb/dwc3/gadget.c
> +++ b/drivers/usb/dwc3/gadget.c
> @@ -4656,7 +4656,7 @@ int dwc3_gadget_suspend(struct dwc3 *dwc)
> {
> unsigned long flags;
>
> - if (!dwc->gadget_driver)
> + if (!dwc->gadget_driver || !dwc->softconnect)
> return 0;
>
> dwc3_gadget_run_stop(dwc, false);
> --
> 2.34.1
>