Skip to contentSkip to conversation

usb: dwc3: gadget: remove warning during kernel boot

PATCH In review Ray Chi 3 participants 8 messages Feb 20, 2024 – Feb 23, 2024

Subsystems (3)
lore
Share & tools
lore

Ray Chi

author
#0 lore raw

PATCH 1/1 usb: dwc3: gadget: remove warning during kernel boot

The dwc3->gadget_driver is not initialized during the dwc3 probe process. This leads to a warning when the runtime power management (PM) attempts to suspend the gadget using dwc3_gadget_suspend().

This patch adds a check to prevent the warning.

Fixes 61a348857e86 ("usb: dwc3: gadget: Fix NULL pointer dereference in dwc3_gadget_suspend")
---
 drivers/usb/dwc3/gadget.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/usb/dwc3/gadget.c +3 -0
index 28f49400f3e8..de987cffe1ec 100644
@@ -4708,6 +4708,9 @@ int dwc3_gadget_suspend(struct dwc3 *dwc)
 	unsigned long flags;
 	int ret;
 
+	if (!dwc->gadget_driver)
+		return 0;
+
 	ret = dwc3_gadget_soft_disconnect(dwc);
 	if (ret)
 		goto err;
Signature · 1 line
2.44.0.rc0.258.g7320e95886-goog
author
#1 lore raw
Quoted 29 lines · Ray Chi

The dwc3->gadget_driver is not initialized during the dwc3 probe process. This leads to a warning when the runtime power management (PM) attempts to suspend the gadget using dwc3_gadget_suspend().

This patch adds a check to prevent the warning.

Fixes 61a348857e86 ("usb: dwc3: gadget: Fix NULL pointer dereference in dwc3_gadget_suspend")
---
 drivers/usb/dwc3/gadget.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/usb/dwc3/gadget.c +3 -1
index 28f49400f3e8..de987cffe1ec 100644
@@ -4708,6 +4708,9 @@ int dwc3_gadget_suspend(struct dwc3 *dwc)
        unsigned long flags;
        int ret;
 
+       if (!dwc->gadget_driver)
+               return 0;
+
        ret = dwc3_gadget_soft_disconnect(dwc);
        if (ret)
                goto err;
--
Quoted 2 lines

2.44.0.rc0.258.g7320e95886-goog

Attached the warning message.

02-20 06:01:24.227725  root    86    86 W Call trace:
02-20 06:01:24.227730  root    86    86 W         :

dwc3_ep0_out_start+0xec/0x22c
02-20 06:01:24.227738 root 86 86 W :
dwc3_ep0_stall_and_restart+0xb8/0xd4
02-20 06:01:24.227747 root 86 86 W :
dwc3_gadget_soft_disconnect+0x1a8/0x284
02-20 06:01:24.227756 root 86 86 W :
dwc3_gadget_suspend+0x18/0xe4
02-20 06:01:24.227764 root 86 86 W :
dwc3_suspend_common+0x5c/0x320
02-20 06:01:24.227774 root 86 86 W :
dwc3_runtime_suspend+0x30/0x4c
02-20 06:01:24.227783 root 86 86 W :

pm_generic_runtime_suspend+0x3c/0x54
02-20 06:01:24.227793  root    86    86 W         : __rpm_callback+0xfc/0x76c
02-20 06:01:24.227802  root    86    86 W         : rpm_suspend+0x534/0xd78
02-20 06:01:24.227811  root    86    86 W         : dwc3_runtime_idle+0xcc/0x104
02-20 06:01:24.227819  root    86    86 W         : rpm_idle+0x228/0x4e0
02-20 06:01:24.227827  root    86    86 W         : update_autosuspend+0x50/0xb8

02-20 06:01:24.227836 root 86 86 W :
__pm_runtime_use_autosuspend+0x50/0x6c

maintainer
#2 lore raw
Quoted 49 lines · Ray Chi
Quoted 29 lines · Ray Chi

The dwc3->gadget_driver is not initialized during the dwc3 probe process. This leads to a warning when the runtime power management (PM) attempts to suspend the gadget using dwc3_gadget_suspend().

This patch adds a check to prevent the warning.

Fixes 61a348857e86 ("usb: dwc3: gadget: Fix NULL pointer dereference in dwc3_gadget_suspend")
---
 drivers/usb/dwc3/gadget.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/usb/dwc3/gadget.c +3 -1
index 28f49400f3e8..de987cffe1ec 100644
@@ -4708,6 +4708,9 @@ int dwc3_gadget_suspend(struct dwc3 *dwc)
        unsigned long flags;
        int ret;
 
+       if (!dwc->gadget_driver)
+               return 0;
+
        ret = dwc3_gadget_soft_disconnect(dwc);
        if (ret)
                goto err;
--
Quoted 2 lines

2.44.0.rc0.258.g7320e95886-goog

Attached the warning message.

02-20 06:01:24.227725  root    86    86 W Call trace:
02-20 06:01:24.227730  root    86    86 W         :

dwc3_ep0_out_start+0xec/0x22c
02-20 06:01:24.227738 root 86 86 W :
dwc3_ep0_stall_and_restart+0xb8/0xd4
02-20 06:01:24.227747 root 86 86 W :
dwc3_gadget_soft_disconnect+0x1a8/0x284
02-20 06:01:24.227756 root 86 86 W :
dwc3_gadget_suspend+0x18/0xe4
02-20 06:01:24.227764 root 86 86 W :
dwc3_suspend_common+0x5c/0x320
02-20 06:01:24.227774 root 86 86 W :
dwc3_runtime_suspend+0x30/0x4c
02-20 06:01:24.227783 root 86 86 W :

Quoted 8 lines
pm_generic_runtime_suspend+0x3c/0x54
02-20 06:01:24.227793  root    86    86 W         : __rpm_callback+0xfc/0x76c
02-20 06:01:24.227802  root    86    86 W         : rpm_suspend+0x534/0xd78
02-20 06:01:24.227811  root    86    86 W         : dwc3_runtime_idle+0xcc/0x104
02-20 06:01:24.227819  root    86    86 W         : rpm_idle+0x228/0x4e0
02-20 06:01:24.227827  root    86    86 W         : update_autosuspend+0x50/0xb8

02-20 06:01:24.227836 root 86 86 W :
__pm_runtime_use_autosuspend+0x50/0x6c

That's a kernel warning? Odd wrapping :(

Can you clean it up a bit and put it in the changelog? There should be more info before the "Call trace" portion, right? What is causing the warning exactly?

thanks,

greg k-h

maintainer
#3 lore raw
In reply to Ray Chi
Quoted 3 lines · Ray Chi

The dwc3->gadget_driver is not initialized during the dwc3 probe process. This leads to a warning when the runtime power management (PM) attempts to suspend the gadget using dwc3_gadget_suspend().

What type of warning happens?

Quoted 14 lines

This patch adds a check to prevent the warning.

Fixes 61a348857e86 ("usb: dwc3: gadget: Fix NULL pointer dereference in dwc3_gadget_suspend")
---
 drivers/usb/dwc3/gadget.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/usb/dwc3/gadget.c +0 -0
index 28f49400f3e8..de987cffe1ec 100644

drivers/usb/dwc3/gadget.c int dwc3_gadget_suspend(struct dwc3 *dwc) · line 4713

Quoted 6 lines
drivers/usb/dwc3/gadget.c +3 -0
@@ -4708,6 +4708,9 @@ int dwc3_gadget_suspend(struct dwc3 *dwc)
 	unsigned long flags;
 	int ret;
 
+	if (!dwc->gadget_driver)
+		return 0;
+

This directly reverts part of the commit you say this fixes, are you SURE about this? Why?

thanks,

greg k-h

#4 lore raw
Quoted 24 lines · Greg KH
Quoted 3 lines · Ray Chi

The dwc3->gadget_driver is not initialized during the dwc3 probe process. This leads to a warning when the runtime power management (PM) attempts to suspend the gadget using dwc3_gadget_suspend().

What type of warning happens?

Quoted 17 lines

This patch adds a check to prevent the warning.

Fixes 61a348857e86 ("usb: dwc3: gadget: Fix NULL pointer dereference in dwc3_gadget_suspend")
---
  drivers/usb/dwc3/gadget.c | 3 +++
  1 file changed, 3 insertions(+)
drivers/usb/dwc3/gadget.c +0 -0
index 28f49400f3e8..de987cffe1ec 100644
@@ -4708,6 +4708,9 @@ int dwc3_gadget_suspend(struct dwc3 *dwc)
  	unsigned long flags;
  	int ret;
 
Quoted 7 lines

drivers/usb/dwc3/gadget.c int dwc3_gadget_suspend(struct dwc3 *dwc) · line 4713

Quoted 3 lines
drivers/usb/dwc3/gadget.c +3 -0
+	if (!dwc->gadget_driver)
+		return 0;
+

This directly reverts part of the commit you say this fixes, are you SURE about this? Why?

Hi Ray,

Thinh sent a patch recently addressing the issue in soft disconnect. Can you check if it helps:

https://lore.kernel.org/all/e3be9b929934e0680a6f4b8f6eb11b18ae9c7e07.1708043922.git.Thinh.Nguyen@synopsys.com/

Regards,
Krishna,

author
#5 lore raw

Hi Krishna,

I verified the Thinh's patch and the warning could be fixed. Thanks for the information.

Regards,
Ray

Quoted 45 lines · Krishna Kurapati PSSNV
Quoted 24 lines · Greg KH
Quoted 3 lines · Ray Chi

The dwc3->gadget_driver is not initialized during the dwc3 probe process. This leads to a warning when the runtime power management (PM) attempts to suspend the gadget using dwc3_gadget_suspend().

What type of warning happens?

Quoted 17 lines

This patch adds a check to prevent the warning.

Fixes 61a348857e86 ("usb: dwc3: gadget: Fix NULL pointer dereference in dwc3_gadget_suspend")
---
  drivers/usb/dwc3/gadget.c | 3 +++
  1 file changed, 3 insertions(+)
drivers/usb/dwc3/gadget.c +0 -0
index 28f49400f3e8..de987cffe1ec 100644
@@ -4708,6 +4708,9 @@ int dwc3_gadget_suspend(struct dwc3 *dwc)
     unsigned long flags;
     int ret;
 
Quoted 7 lines

drivers/usb/dwc3/gadget.c int dwc3_gadget_suspend(struct dwc3 *dwc) · line 4713

Quoted 3 lines
drivers/usb/dwc3/gadget.c +3 -0
+    if (!dwc->gadget_driver)
+            return 0;
+

This directly reverts part of the commit you say this fixes, are you SURE about this? Why?

Hi Ray,

Thinh sent a patch recently addressing the issue in soft disconnect. Can you check if it helps:

https://lore.kernel.org/all/e3be9b929934e0680a6f4b8f6eb11b18ae9c7e07.1708043922.git.Thinh.Nguyen@synopsys.com/

Regards,
Krishna,

maintainer
#6 lore raw
Quoted 4 lines · Ray Chi

Hi Krishna,

I verified the Thinh's patch and the warning could be fixed. Thanks for the information.

Can you provide a tested-by for that one?

And please do not top post :(

thanks,

greg k-h

author
#7 lore raw
Quoted 8 lines · Greg KH
Quoted 4 lines · Ray Chi

Hi Krishna,

I verified the Thinh's patch and the warning could be fixed. Thanks for the information.

Can you provide a tested-by for that one?

Since the solution has been merged, do I still need to provide tested-by? If tested-by is required, should I reply to the email thread for the merged patch or the reported patch?

Quoted 1 line

And please do not top post :(

Thanks for the tips and your patience.

Regards,
Ray