Message ID | 9fa8a4e09b6fcff4b9d4facc9f9e9f8e3c4a41d5.1582048155.git.amit.kucheria@linaro.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | thermal: tsens: Handle critical interrupts | expand |
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>
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 --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;