diff mbox series

soc: qcom: ocmem: Fix missing put_device() call in of_get_ocmem

Message ID 20220107073126.2335-1-linmq006@gmail.com (mailing list archive)
State Accepted, archived
Headers show
Series soc: qcom: ocmem: Fix missing put_device() call in of_get_ocmem | expand

Commit Message

Miaoqian Lin Jan. 7, 2022, 7:31 a.m. UTC
The reference taken by 'of_find_device_by_node()' must be released when
not needed anymore.
Add the corresponding 'put_device()' in the error handling path.

Fixes: 01f937ffc468 ("soc: qcom: ocmem: don't return NULL in of_get_ocmem")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
---
 drivers/soc/qcom/ocmem.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Bjorn Andersson Jan. 31, 2022, 10:14 p.m. UTC | #1
On Fri 07 Jan 01:31 CST 2022, Miaoqian Lin wrote:

> The reference taken by 'of_find_device_by_node()' must be released when
> not needed anymore.
> Add the corresponding 'put_device()' in the error handling path.
> 
> Fixes: 01f937ffc468 ("soc: qcom: ocmem: don't return NULL in of_get_ocmem")
> Signed-off-by: Miaoqian Lin <linmq006@gmail.com>

Your patch solves the particular problem, so I'm applying it.

But it seems that we never release pdev in the case of successfully
return the ocmem object either... So there's more to improve here.

Regards,
Bjorn

> ---
>  drivers/soc/qcom/ocmem.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/soc/qcom/ocmem.c b/drivers/soc/qcom/ocmem.c
> index d2dacbbaafbd..97fd24c178f8 100644
> --- a/drivers/soc/qcom/ocmem.c
> +++ b/drivers/soc/qcom/ocmem.c
> @@ -206,6 +206,7 @@ struct ocmem *of_get_ocmem(struct device *dev)
>  	ocmem = platform_get_drvdata(pdev);
>  	if (!ocmem) {
>  		dev_err(dev, "Cannot get ocmem\n");
> +		put_device(&pdev->dev);
>  		return ERR_PTR(-ENODEV);
>  	}
>  	return ocmem;
> -- 
> 2.17.1
>
Bjorn Andersson Feb. 4, 2022, 6:35 p.m. UTC | #2
On Fri, 7 Jan 2022 07:31:26 +0000, Miaoqian Lin wrote:
> The reference taken by 'of_find_device_by_node()' must be released when
> not needed anymore.
> Add the corresponding 'put_device()' in the error handling path.
> 
> 

Applied, thanks!

[1/1] soc: qcom: ocmem: Fix missing put_device() call in of_get_ocmem
      commit: 0ff027027e05a866491bbb53494f0e2a61354c85

Best regards,
Miaoqian Lin March 1, 2022, 6:58 a.m. UTC | #3
Hi, Andersson:

> Your patch solves the particular problem, so I'm applying it.
> 
> But it seems that we never release pdev in the case of successfully
> return the ocmem object either... So there's more to improve here.
> 
Thanks for your time. Should I submit another patch to release pdev 
in the regular path?

> >  drivers/soc/qcom/ocmem.c | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/drivers/soc/qcom/ocmem.c b/drivers/soc/qcom/ocmem.c
> > index d2dacbbaafbd..97fd24c178f8 100644
> > --- a/drivers/soc/qcom/ocmem.c
> > +++ b/drivers/soc/qcom/ocmem.c
> > @@ -206,6 +206,7 @@ struct ocmem *of_get_ocmem(struct device *dev)
> >  	ocmem = platform_get_drvdata(pdev);
> >  	if (!ocmem) {
> >  		dev_err(dev, "Cannot get ocmem\n");
> > +		put_device(&pdev->dev);
> >  		return ERR_PTR(-ENODEV);
> >  	}
> >  	return ocmem;
> > -- 
> > 2.17.1
> >
diff mbox series

Patch

diff --git a/drivers/soc/qcom/ocmem.c b/drivers/soc/qcom/ocmem.c
index d2dacbbaafbd..97fd24c178f8 100644
--- a/drivers/soc/qcom/ocmem.c
+++ b/drivers/soc/qcom/ocmem.c
@@ -206,6 +206,7 @@  struct ocmem *of_get_ocmem(struct device *dev)
 	ocmem = platform_get_drvdata(pdev);
 	if (!ocmem) {
 		dev_err(dev, "Cannot get ocmem\n");
+		put_device(&pdev->dev);
 		return ERR_PTR(-ENODEV);
 	}
 	return ocmem;