From: "Niklas Söderlund" <niklas.soderlund@ragnatech.se>
To: Dan Carpenter <error27@gmail.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
Daniel Lezcano <daniel.lezcano@kernel.org>,
Zhang Rui <rui.zhang@intel.com>,
Lukasz Luba <lukasz.luba@arm.com>,
Geert Uytterhoeven <geert+renesas@glider.be>,
Magnus Damm <magnus.damm@gmail.com>,
linux-renesas-soc@vger.kernel.org, linux-pm@vger.kernel.org,
linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
Subject: Re: [PATCH v3] thermal/drivers/rcar: fix error checking in probe()
Date: Fri, 26 Jun 2026 13:13:34 +0200 [thread overview]
Message-ID: <20260626111334.GB1325538@ragnatech.se> (raw)
In-Reply-To: <aj5WnseULiwgmlWv@stanley.mountain>
Hi Dan,
Thanks for your work.
On 2026-06-26 13:38:22 +0300, Dan Carpenter wrote:
> This code accidentally calls thermal_zone_device_enable() before checking
> whether thermal_zone_device_register_with_trips() failed. Move the call
> until later to avoid an error pointer dereference of "priv->zone".
>
> The driver works differently depending on if we are using OF thermal or
> not. We use thermal_add_hwmon_sysfs() if we are using OF thermal and
> call thermal_zone_device_enable() if not. We can share same error check
> for if either of these fail.
>
> Moving the thermal_zone_device_enable() call is a bit cleaner as well.
> The original code used a three step process to cleanup:
> 1. Call thermal_zone_device_unregister() to cleanup.
> 2. Set priv->zone to an error pointer to preserve the error code.
> 3. Set priv->zone to NULL to avoid a second call to
> thermal_zone_device_unregister() in the rcar_thermal_remove()
> function.
>
> Now we can just do a direct goto error_unregister and rcar_thermal_remove()
> handles the cleanup properly.
>
> Fixes: bbcf90c0646a ("thermal: Explicitly enable non-changing thermal zone devices")
> Signed-off-by: Dan Carpenter <error27@gmail.com>
> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> ---
> v2: Use the correct fixes tag and re-write the check in a cleaner way.
> v3: Share the same error checking as a further cleanup. The
> thermal_add_hwmon_sysfs() and thermal_zone_device_enable() functions
> really do serve the same purpose even though their names are
> different.
>
> drivers/thermal/renesas/rcar_thermal.c | 15 +++++----------
> 1 file changed, 5 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/thermal/renesas/rcar_thermal.c b/drivers/thermal/renesas/rcar_thermal.c
> index 6e5dcac5d47a..fd686da9252e 100644
> --- a/drivers/thermal/renesas/rcar_thermal.c
> +++ b/drivers/thermal/renesas/rcar_thermal.c
> @@ -492,12 +492,6 @@ static int rcar_thermal_probe(struct platform_device *pdev)
> "rcar_thermal", trips, ARRAY_SIZE(trips), priv,
> &rcar_thermal_zone_ops, NULL, 0,
> idle);
> -
> - ret = thermal_zone_device_enable(priv->zone);
> - if (ret) {
> - thermal_zone_device_unregister(priv->zone);
> - priv->zone = ERR_PTR(ret);
> - }
> }
> if (IS_ERR(priv->zone)) {
> dev_err(dev, "can't register thermal zone\n");
> @@ -506,11 +500,12 @@ static int rcar_thermal_probe(struct platform_device *pdev)
> goto error_unregister;
> }
>
> - if (chip->use_of_thermal) {
> + if (chip->use_of_thermal)
> ret = thermal_add_hwmon_sysfs(priv->zone);
> - if (ret)
> - goto error_unregister;
> - }
> + else
> + ret = thermal_zone_device_enable(priv->zone);
> + if (ret)
> + goto error_unregister;
>
> rcar_thermal_irq_enable(priv);
>
> --
> 2.53.0
>
--
Kind Regards,
Niklas Söderlund
next prev parent reply other threads:[~2026-06-26 11:13 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-26 10:38 [PATCH v3] thermal/drivers/rcar: fix error checking in probe() Dan Carpenter
2026-06-26 11:13 ` Niklas Söderlund [this message]
2026-07-08 11:19 ` Daniel Lezcano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260626111334.GB1325538@ragnatech.se \
--to=niklas.soderlund@ragnatech.se \
--cc=daniel.lezcano@kernel.org \
--cc=error27@gmail.com \
--cc=geert+renesas@glider.be \
--cc=kernel-janitors@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=lukasz.luba@arm.com \
--cc=magnus.damm@gmail.com \
--cc=rafael@kernel.org \
--cc=rui.zhang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.