Re: [PATCH v7 1/3] usb: dwc3: qcom: Add missing DWC3 OF node refcount decrement

From: Serge Semin
Date: Thu Feb 18 2021 - 13:03:15 EST


Bjorn, Greg, Felippe, Andy,
Any comments on this series? Bjorn, Greg you asked me to resend the
patches related with the DW USB3 node name change. I did as you said,
but no news since then. I'd be glad to have this patch accepted in
some -next repo and forget about it.

-Sergey

On Fri, Feb 12, 2021 at 11:55:19PM +0300, Serge Semin wrote:
> of_get_child_by_name() increments the reference counter of the OF node it
> managed to find. So after the code is done using the device node, the
> refcount must be decremented. Add missing of_node_put() invocation then
> to the dwc3_qcom_of_register_core() method, since DWC3 OF node is being
> used only there.
>
> Fixes: a4333c3a6ba9 ("usb: dwc3: Add Qualcomm DWC3 glue driver")
> Signed-off-by: Serge Semin <Sergey.Semin@xxxxxxxxxxxxxxxxxxxx>
>
> ---
>
> Note the patch will get cleanly applied on the commit 2bc02355f8ba ("usb:
> dwc3: qcom: Add support for booting with ACPI"), while the bug has been
> there since the Qualcomm DWC3 glue driver was submitted.
>
> Changelog v7:
> - This is a new patch. Please drop it If I missed something and the OF
> node refcount decrement wasn't supposed to be there.
> ---
> drivers/usb/dwc3/dwc3-qcom.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
> index c703d552bbcf..3564d00cdce3 100644
> --- a/drivers/usb/dwc3/dwc3-qcom.c
> +++ b/drivers/usb/dwc3/dwc3-qcom.c
> @@ -639,16 +639,19 @@ static int dwc3_qcom_of_register_core(struct platform_device *pdev)
> ret = of_platform_populate(np, NULL, NULL, dev);
> if (ret) {
> dev_err(dev, "failed to register dwc3 core - %d\n", ret);
> - return ret;
> + goto node_put;
> }
>
> qcom->dwc3 = of_find_device_by_node(dwc3_np);
> if (!qcom->dwc3) {
> + ret = -ENODEV;
> dev_err(dev, "failed to get dwc3 platform device\n");
> - return -ENODEV;
> }
>
> - return 0;
> +node_put:
> + of_node_put(dwc3_np);
> +
> + return ret;
> }
>
> static int dwc3_qcom_probe(struct platform_device *pdev)
> --
> 2.30.0
>