diff mbox series

[RFC,for-5.8] usb: dwc2: Cleanup debugfs when usb_add_gadget_udc() fails

Message ID 20200629180314.2878638-1-martin.blumenstingl@googlemail.com
State New
Headers show
Series [RFC,for-5.8] usb: dwc2: Cleanup debugfs when usb_add_gadget_udc() fails | expand

Commit Message

Martin Blumenstingl June 29, 2020, 6:03 p.m. UTC
Call dwc2_debugfs_exit() when usb_add_gadget_udc() has failed. This
ensure that the debugfs entries created by dwc2_debugfs_init() are
cleaned up in the error path.

Fixes: 207324a321a866 ("usb: dwc2: Postponed gadget registration to the udc class driver")
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
---
This patch is compile-tested only. I found this while trying to
understand the latest changes to dwc2/platform.c.


 drivers/usb/dwc2/platform.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Felipe Balbi July 23, 2020, 1:03 p.m. UTC | #1
Minas Harutyunyan <Minas.Harutyunyan@synopsys.com> writes:

> Hi Martin,

>

> On 6/29/2020 10:03 PM, Martin Blumenstingl wrote:

>> Call dwc2_debugfs_exit() when usb_add_gadget_udc() has failed. This

>> ensure that the debugfs entries created by dwc2_debugfs_init() are

>> cleaned up in the error path.

>> 

>> Fixes: 207324a321a866 ("usb: dwc2: Postponed gadget registration to the udc class driver")

>> Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

>> ---

>> This patch is compile-tested only. I found this while trying to

>> understand the latest changes to dwc2/platform.c.

>> 

>> 

>>   drivers/usb/dwc2/platform.c | 4 +++-

>>   1 file changed, 3 insertions(+), 1 deletion(-)

>> 

>> diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c

>> index c347d93eae64..02b6da7e21d7 100644

>> --- a/drivers/usb/dwc2/platform.c

>> +++ b/drivers/usb/dwc2/platform.c

>> @@ -582,12 +582,14 @@ static int dwc2_driver_probe(struct platform_device *dev)

>>   		retval = usb_add_gadget_udc(hsotg->dev, &hsotg->gadget);

>>   		if (retval) {

>>   			dwc2_hsotg_remove(hsotg);

>> -			goto error_init;

>> +			goto error_debugfs;

>>   		}

>>   	}

>>   #endif /* CONFIG_USB_DWC2_PERIPHERAL || CONFIG_USB_DWC2_DUAL_ROLE */

>>   	return 0;

>>   

>> +error_debugfs:

>> +	dwc2_debugfs_exit(hsotg);

>>   error_init:

>>   	if (hsotg->params.activate_stm_id_vb_detection)

>>   		regulator_disable(hsotg->usb33d);

>> 

> I'm Ok with this fix. One more thing. I missed to remove hcd also in 

> fail case. Could you please add dwc2_hcd_remove() call after 

> dwc2_debugfs_exit(hsotg) and submit as patch:

>

> +error_debugfs:

> +	dwc2_debugfs_exit(hsotg);

> +	if (hsotg->hcd_enabled)

> +		dwc2_hcd_remove(hsotg);

>    error_init:


looks like it should be a separate patch though. Right?

-- 
balbi
Minas Harutyunyan July 23, 2020, 1:22 p.m. UTC | #2
Hi Felipe,

On 7/23/2020 5:03 PM, Felipe Balbi wrote:
> Minas Harutyunyan <Minas.Harutyunyan@synopsys.com> writes:

> 

>> Hi Martin,

>>

>> On 6/29/2020 10:03 PM, Martin Blumenstingl wrote:

>>> Call dwc2_debugfs_exit() when usb_add_gadget_udc() has failed. This

>>> ensure that the debugfs entries created by dwc2_debugfs_init() are

>>> cleaned up in the error path.

>>>

>>> Fixes: 207324a321a866 ("usb: dwc2: Postponed gadget registration to the udc class driver")

>>> Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

>>> ---

>>> This patch is compile-tested only. I found this while trying to

>>> understand the latest changes to dwc2/platform.c.

>>>

>>>

>>>    drivers/usb/dwc2/platform.c | 4 +++-

>>>    1 file changed, 3 insertions(+), 1 deletion(-)

>>>

>>> diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c

>>> index c347d93eae64..02b6da7e21d7 100644

>>> --- a/drivers/usb/dwc2/platform.c

>>> +++ b/drivers/usb/dwc2/platform.c

>>> @@ -582,12 +582,14 @@ static int dwc2_driver_probe(struct platform_device *dev)

>>>    		retval = usb_add_gadget_udc(hsotg->dev, &hsotg->gadget);

>>>    		if (retval) {

>>>    			dwc2_hsotg_remove(hsotg);

>>> -			goto error_init;

>>> +			goto error_debugfs;

>>>    		}

>>>    	}

>>>    #endif /* CONFIG_USB_DWC2_PERIPHERAL || CONFIG_USB_DWC2_DUAL_ROLE */

>>>    	return 0;

>>>    

>>> +error_debugfs:

>>> +	dwc2_debugfs_exit(hsotg);

>>>    error_init:

>>>    	if (hsotg->params.activate_stm_id_vb_detection)

>>>    		regulator_disable(hsotg->usb33d);

>>>

>> I'm Ok with this fix. One more thing. I missed to remove hcd also in

>> fail case. Could you please add dwc2_hcd_remove() call after

>> dwc2_debugfs_exit(hsotg) and submit as patch:

>>

>> +error_debugfs:

>> +	dwc2_debugfs_exit(hsotg);

>> +	if (hsotg->hcd_enabled)

>> +		dwc2_hcd_remove(hsotg);

>>     error_init:

> 

> looks like it should be a separate patch though. Right?


v2 of this patch already submitted by Martin Blumenstingl 
<martin.blumenstingl@googlemail.com> on 7/4/2020 with fix related to 
dwc2_hcd_remove() and I acked it:

[PATCH for-5.8 v2] usb: dwc2: Add missing cleanups when 
usb_add_gadget_udc() fails


Thanks,
Minas

>
diff mbox series

Patch

diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
index c347d93eae64..02b6da7e21d7 100644
--- a/drivers/usb/dwc2/platform.c
+++ b/drivers/usb/dwc2/platform.c
@@ -582,12 +582,14 @@  static int dwc2_driver_probe(struct platform_device *dev)
 		retval = usb_add_gadget_udc(hsotg->dev, &hsotg->gadget);
 		if (retval) {
 			dwc2_hsotg_remove(hsotg);
-			goto error_init;
+			goto error_debugfs;
 		}
 	}
 #endif /* CONFIG_USB_DWC2_PERIPHERAL || CONFIG_USB_DWC2_DUAL_ROLE */
 	return 0;
 
+error_debugfs:
+	dwc2_debugfs_exit(hsotg);
 error_init:
 	if (hsotg->params.activate_stm_id_vb_detection)
 		regulator_disable(hsotg->usb33d);