From: sashiko-bot@kernel.org
To: "Daniel Lezcano" <daniel.lezcano@oss.qualcomm.com>
Cc: linux-hwmon@vger.kernel.org
Subject: Re: [PATCH v2 04/12] thermal/core: Remove node pointer parameter when registering a tz
Date: Wed, 22 Apr 2026 22:25:12 +0000 [thread overview]
Message-ID: <20260422222513.27E67C19425@smtp.kernel.org> (raw)
In-Reply-To: <20260422174305.2899095-5-daniel.lezcano@oss.qualcomm.com>
Sashiko AI review found 4 potential issue(s):
- [High] Compilation failure due to undeclared identifier `np` in `__thermal_cooling_device_register`.
- [High] Compilation failure due to argument count mismatch in `devm_thermal_of_cooling_device_register`.
- [High] Device tree (OF) cooling devices silently fail to bind to thermal zones.
- [Low] Misleading kerneldoc for `devm_thermal_cooling_device_register`.
--
commit fb0063667bcf5ae686659ae0c320b2fb8a2e567e
Author: Daniel Lezcano <daniel.lezcano@oss.qualcomm.com>
thermal/core: Remove node pointer parameter when registering a tz
This patch removes the device_node pointer parameter in the core function
registering a thermal cooling device, which is inconsistent with non-OF code.
> diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
> index 35cf170f3fa1c..113719466dc21 100644
> --- a/drivers/thermal/thermal_core.c
> +++ b/drivers/thermal/thermal_core.c
[ ... ]
> @@ -1050,15 +1049,12 @@ void thermal_cooling_device_init_complete(struct thermal_cooling_device *cdev)
> * This interface function adds a new thermal cooling device (fan/processor/...)
> * to /sys/class/thermal/ folder as cooling_device[0-*]. It tries to bind itself
> * to all the thermal zone devices registered at the same time.
> - * It also gives the opportunity to link the cooling device to a device tree
> - * node, so that it can be bound to a thermal zone created out of device tree.
> *
> * Return: a pointer to the created struct thermal_cooling_device or an
> * ERR_PTR. Caller must check return value with IS_ERR*() helpers.
> */
> struct thermal_cooling_device *
> -__thermal_cooling_device_register(struct device_node *np,
> - const char *type, void *devdata,
> +__thermal_cooling_device_register(const char *type, void *devdata,
> const struct thermal_cooling_device_ops *ops)
> {
> struct thermal_cooling_device *cdev;
Does removing the np parameter here cause a compilation failure?
The assignment cdev->np = np; was left untouched further down in the function
body, which results in an undeclared identifier error.
(Note: This regression is fixed later in the series by commit 1b7fe95232020)
[ ... ]
> @@ -1167,6 +1163,50 @@ thermal_cooling_device_register(const char *type, void *devdata,
> }
> EXPORT_SYMBOL_GPL(thermal_cooling_device_register);
>
> +static void thermal_cooling_device_release(struct device *dev, void *res)
> +{
> + thermal_cooling_device_unregister(*(struct thermal_cooling_device **)res);
> +}
> +
> +/**
> + * devm_thermal_cooling_device_register() - register a thermal cooling device
> + * @dev: a valid struct device pointer of a sensor device.
> + * @type: the thermal cooling device type.
> + * @devdata: device private data.
> + * @ops: standard thermal cooling devices callbacks.
> + *
> + * This function will register a cooling device with device tree node reference.
This isn't a bug, but is this kerneldoc accurate?
This function is the generic (non-OF) devres variant and does not extract or
assign any device tree node reference. It appears to be a copy-paste error
from the OF-specific variant.
> + * This interface function adds a new thermal cooling device (fan/processor/...)
> + * to /sys/class/thermal/ folder as cooling_device[0-*]. It tries to bind itself
> + * to all the thermal zone devices registered at the same time.
> + *
> + * Return: a pointer to the created struct thermal_cooling_device or an
> + * ERR_PTR. Caller must check return value with IS_ERR*() helpers.
> + */
> +struct thermal_cooling_device *
> +devm_thermal_cooling_device_register(struct device *dev, const char *type,
> + void *devdata, const struct thermal_cooling_device_ops *ops)
[ ... ]
> diff --git a/drivers/thermal/thermal_core.h b/drivers/thermal/thermal_core.h
> index 6e44bcf37b003..d45455bb9e9e6 100644
> --- a/drivers/thermal/thermal_core.h
> +++ b/drivers/thermal/thermal_core.h
> @@ -272,8 +272,7 @@ void thermal_governor_update_tz(struct thermal_zone_device *tz,
> void thermal_cooling_device_init_complete(struct thermal_cooling_device *cdev);
>
> struct thermal_cooling_device *
> -__thermal_cooling_device_register(struct device_node *np,
> - const char *type, void *devdata,
> +__thermal_cooling_device_register(const char *type, void *devdata,
> const struct thermal_cooling_device_ops *ops);
Does changing this prototype cause a compilation failure due to an argument
count mismatch in devm_thermal_of_cooling_device_register()?
The existing call inside devm_thermal_of_cooling_device_register() in
drivers/thermal/thermal_of.c was not updated and still passes 4 arguments.
(Note: This regression is fixed later in the series by commit 1b7fe95232020)
[ ... ]
> diff --git a/drivers/thermal/thermal_of.c b/drivers/thermal/thermal_of.c
> index c4b67554df447..3ba8c970f11f3 100644
> --- a/drivers/thermal/thermal_of.c
> +++ b/drivers/thermal/thermal_of.c
> @@ -533,7 +533,7 @@ thermal_of_cooling_device_register(struct device_node *np,
> {
> struct thermal_cooling_device *cdev;
>
> - cdev = __thermal_cooling_device_register(np, type, devdata, ops);
> + cdev = __thermal_cooling_device_register(type, devdata, ops);
> if (IS_ERR(cdev))
> return cdev;
Does this silently break device tree thermal zone cooling bindings?
Since the np parameter is removed from the core registration function,
cdev->np is no longer populated there. The np parameter is passed here, but
not manually assigned to cdev->np.
Because cdev is zero-allocated, cdev->np remains NULL. When
thermal_cooling_device_init_complete() runs to bind the cooling device,
the check if (cooling_spec.np != cdev->np) will unconditionally fail.
(Note: This regression is fixed later in the series by commit 1b7fe95232020)
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260422174305.2899095-1-daniel.lezcano@oss.qualcomm.com?part=4
next prev parent reply other threads:[~2026-04-22 22:25 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-22 17:42 [PATCH v2 00/12] Support cooling device with ID in the OF Daniel Lezcano
2026-04-22 17:42 ` [PATCH v2 01/12] thermal/driver/tegra/soctherm: Use devm_ variant when registering a cooling device Daniel Lezcano
2026-04-22 21:38 ` sashiko-bot
2026-04-22 17:42 ` [PATCH v2 02/12] thermal/of: Move OF code where it belongs to Daniel Lezcano
2026-04-22 21:49 ` sashiko-bot
2026-04-22 17:42 ` [PATCH v2 03/12] thermal/core: Make thermal_cooling_device_init_complete() non static Daniel Lezcano
2026-04-22 17:42 ` [PATCH v2 04/12] thermal/core: Remove node pointer parameter when registering a tz Daniel Lezcano
2026-04-22 22:25 ` sashiko-bot [this message]
2026-04-22 17:42 ` [PATCH v2 05/12] thermal/of: Move the node pointer assignation in the OF code file Daniel Lezcano
2026-04-22 22:50 ` sashiko-bot
2026-04-22 17:42 ` [PATCH v2 06/12] hwmon:: Use non-OF thermal cooling device register function Daniel Lezcano
2026-04-22 17:42 ` [PATCH v2 07/12] thermal/core: Put of_node field cooling device structure under Kconfig option Daniel Lezcano
2026-04-22 23:19 ` sashiko-bot
2026-04-22 17:42 ` [PATCH v2 08/12] thermal/of: Rename the devm_thermal_of_cooling_device_register() function Daniel Lezcano
2026-04-22 17:42 ` Daniel Lezcano
2026-04-22 23:33 ` sashiko-bot
2026-04-22 17:42 ` [PATCH v2 09/12] thermal/of: Introduce cooling device of_index Daniel Lezcano
2026-04-22 23:48 ` sashiko-bot
2026-04-22 17:42 ` [PATCH v2 10/12] thermal/of: Pass the of_index and add a function to register with an index Daniel Lezcano
2026-04-22 17:43 ` [PATCH v2 11/12] thermal/of: Process cooling device index in cooling-spec Daniel Lezcano
2026-04-22 17:43 ` [PATCH v2 12/12] dt-bindings: thermal: cooling-devices: Update support for 3 cells cooling device Daniel Lezcano
2026-04-23 0:23 ` sashiko-bot
2026-04-23 8:33 ` Krzysztof Kozlowski
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=20260422222513.27E67C19425@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=daniel.lezcano@oss.qualcomm.com \
--cc=linux-hwmon@vger.kernel.org \
--cc=sashiko@lists.linux.dev \
/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.