diff mbox series

[v5,4/8] drivers: thermal: tsens: Release device in success path

Message ID 9fa8a4e09b6fcff4b9d4facc9f9e9f8e3c4a41d5.1582048155.git.amit.kucheria@linaro.org (mailing list archive)
State Superseded, archived
Headers show
Series thermal: tsens: Handle critical interrupts | expand

Commit Message

Amit Kucheria Feb. 18, 2020, 6:12 p.m. UTC
We don't currently call put_device in case of successfully initialising
the device.

Allow control to fall through so we can use same code for success and
error paths to put_device.

As a part of this fixup, change devm_ioremap_resource to act on the same
device pointer as that used to allocate regmap memory. That ensures that
we are free to release op->dev after examining its resources.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 drivers/thermal/qcom/tsens-common.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

Comments

Stephen Boyd Feb. 19, 2020, 10:55 p.m. UTC | #1
Quoting Amit Kucheria (2020-02-18 10:12:08)
> We don't currently call put_device in case of successfully initialising
> the device.

Sure, but why is that a problem? Presumably the device is kept pinned
forever?

> 
> Allow control to fall through so we can use same code for success and
> error paths to put_device.
> 
> As a part of this fixup, change devm_ioremap_resource to act on the same
> device pointer as that used to allocate regmap memory. That ensures that
> we are free to release op->dev after examining its resources.
> 
> Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Amit Kucheria Feb. 24, 2020, 9:22 a.m. UTC | #2
On Thu, Feb 20, 2020 at 4:25 AM Stephen Boyd <swboyd@chromium.org> wrote:
>
> Quoting Amit Kucheria (2020-02-18 10:12:08)
> > We don't currently call put_device in case of successfully initialising
> > the device.
>
> Sure, but why is that a problem? Presumably the device is kept pinned
> forever?

Right, we keep the reference forever. Will fix the commit message.
>
> >
> > Allow control to fall through so we can use same code for success and
> > error paths to put_device.
> >
> > As a part of this fixup, change devm_ioremap_resource to act on the same
> > device pointer as that used to allocate regmap memory. That ensures that
> > we are free to release op->dev after examining its resources.
> >
> > Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
> > Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
diff mbox series

Patch

diff --git a/drivers/thermal/qcom/tsens-common.c b/drivers/thermal/qcom/tsens-common.c
index 1cbc5a6e5b4f..013750fff8b2 100644
--- a/drivers/thermal/qcom/tsens-common.c
+++ b/drivers/thermal/qcom/tsens-common.c
@@ -602,7 +602,7 @@  int __init init_common(struct tsens_priv *priv)
 		/* DT with separate SROT and TM address space */
 		priv->tm_offset = 0;
 		res = platform_get_resource(op, IORESOURCE_MEM, 1);
-		srot_base = devm_ioremap_resource(&op->dev, res);
+		srot_base = devm_ioremap_resource(dev, res);
 		if (IS_ERR(srot_base)) {
 			ret = PTR_ERR(srot_base);
 			goto err_put_device;
@@ -620,7 +620,7 @@  int __init init_common(struct tsens_priv *priv)
 	}
 
 	res = platform_get_resource(op, IORESOURCE_MEM, 0);
-	tm_base = devm_ioremap_resource(&op->dev, res);
+	tm_base = devm_ioremap_resource(dev, res);
 	if (IS_ERR(tm_base)) {
 		ret = PTR_ERR(tm_base);
 		goto err_put_device;
@@ -687,8 +687,6 @@  int __init init_common(struct tsens_priv *priv)
 	tsens_enable_irq(priv);
 	tsens_debug_init(op);
 
-	return 0;
-
 err_put_device:
 	put_device(&op->dev);
 	return ret;