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 (mailing list archive)
State New, archived
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

Minas Harutyunyan July 1, 2020, 7:16 a.m. UTC | #1
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:


Thanks,
Minas
Felipe Balbi July 23, 2020, 1:03 p.m. UTC | #2
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?
Minas Harutyunyan July 23, 2020, 1:22 p.m. UTC | #3
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);