All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] thermal/drivers/imx9: Constify struct thermal_zone_device_ops
@ 2026-08-08 20:23 Christophe JAILLET
  2026-08-08 20:32 ` sashiko-bot
  2026-08-10 19:09 ` Frank Li
  0 siblings, 2 replies; 3+ messages in thread
From: Christophe JAILLET @ 2026-08-08 20:23 UTC (permalink / raw)
  To: Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
  Cc: linux-kernel, kernel-janitors, Christophe JAILLET, linux-pm, imx,
	linux-arm-kernel

'struct thermal_zone_device_ops' is not modified in this driver.

Constifying this structure moves some data to a read-only section, so
increases overall security, especially when the structure holds some
function pointers.

On a x86_64, with allmodconfig:
Before:
======
   text	   data	    bss	    dec	    hex	filename
   8567	   2144	      0	  10711	   29d7	drivers/thermal/imx91_thermal.o

After:
=====
   text	   data	    bss	    dec	    hex	filename
   8695	   2016	      0	  10711	   29d7	drivers/thermal/imx91_thermal.o

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
Compile tested only.
---
 drivers/thermal/imx91_thermal.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/thermal/imx91_thermal.c b/drivers/thermal/imx91_thermal.c
index 25915bb702be..892a25440e06 100644
--- a/drivers/thermal/imx91_thermal.c
+++ b/drivers/thermal/imx91_thermal.c
@@ -225,7 +225,7 @@ static int imx91_tmu_change_mode(struct thermal_zone_device *tz, enum thermal_de
 	return 0;
 }
 
-static struct thermal_zone_device_ops tmu_tz_ops = {
+static const struct thermal_zone_device_ops tmu_tz_ops = {
 	.get_temp = imx91_tmu_get_temp,
 	.change_mode = imx91_tmu_change_mode,
 	.set_trips = imx91_tmu_set_trips,
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] thermal/drivers/imx9: Constify struct thermal_zone_device_ops
  2026-08-08 20:23 [PATCH] thermal/drivers/imx9: Constify struct thermal_zone_device_ops Christophe JAILLET
@ 2026-08-08 20:32 ` sashiko-bot
  2026-08-10 19:09 ` Frank Li
  1 sibling, 0 replies; 3+ messages in thread
From: sashiko-bot @ 2026-08-08 20:32 UTC (permalink / raw)
  To: Christophe JAILLET; +Cc: imx, Frank.Li

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] Unsafe asynchronous `pm_runtime_get()` used immediately prior to device register access.
--

--- Patch [1]: [PATCH] thermal/drivers/imx9: Constify struct thermal_zone_device_ops ---
commit a5aeff30f3e13d6747636801e7e678ac7b06d113
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>

thermal/drivers/imx9: Constify struct thermal_zone_device_ops

Constify the thermal_zone_device_ops structure since it is not modified in
the driver. This moves the data to a read-only section, improving overall
security by protecting the function pointers.

> diff --git a/drivers/thermal/imx91_thermal.c b/drivers/thermal/imx91_thermal.c
> index 25915bb702bea..892a25440e06e 100644
> --- a/drivers/thermal/imx91_thermal.c
> +++ b/drivers/thermal/imx91_thermal.c
> @@ -225,7 +225,7 @@ static int imx91_tmu_change_mode(struct thermal_zone_device *tz, enum thermal_de
>  	return 0;
>  }
>  
> -static struct thermal_zone_device_ops tmu_tz_ops = {
> +static const struct thermal_zone_device_ops tmu_tz_ops = {
>  	.get_temp = imx91_tmu_get_temp,
>  	.change_mode = imx91_tmu_change_mode,

[Severity: High]
This is a pre-existing issue, but I noticed a potential problem with the
imx91_tmu_change_mode function referenced here.

Can this result in a bus fault if the device clocks are not yet enabled?

Looking at imx91_tmu_change_mode(), it uses the asynchronous
pm_runtime_get():

drivers/thermal/imx91_thermal.c:imx91_tmu_change_mode() {
	if (mode == THERMAL_DEVICE_ENABLED) {
		ret = pm_runtime_get(tmu->dev);
		if (ret < 0)
			return ret;

		writel_relaxed(IMX91_TMU_CTRL0_THR1_IE | IMX91_TMU_CTRL0_THR1_MASK,
			       tmu->base + IMX91_TMU_CTRL0 + REG_CLR);
...
}

Because pm_runtime_get() queues an asynchronous resume and returns
immediately, writel_relaxed() could access memory-mapped registers before
the PM workqueue has completed the resume and enabled the device's clocks.

Should this use pm_runtime_resume_and_get() instead to ensure the device
is synchronously resumed before register access?

>  	.set_trips = imx91_tmu_set_trips,
>  };

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/5cce9ea713edcf2aa3c0efd5d31e9d9fd9f40a88.1786220585.git.christophe.jaillet@wanadoo.fr?part=1

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] thermal/drivers/imx9: Constify struct thermal_zone_device_ops
  2026-08-08 20:23 [PATCH] thermal/drivers/imx9: Constify struct thermal_zone_device_ops Christophe JAILLET
  2026-08-08 20:32 ` sashiko-bot
@ 2026-08-10 19:09 ` Frank Li
  1 sibling, 0 replies; 3+ messages in thread
From: Frank Li @ 2026-08-10 19:09 UTC (permalink / raw)
  To: Christophe JAILLET
  Cc: Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	linux-kernel, kernel-janitors, linux-pm, imx, linux-arm-kernel

On Sat, Aug 08, 2026 at 10:23:33PM +0200, Christophe JAILLET wrote:
> 'struct thermal_zone_device_ops' is not modified in this driver.
>
> Constifying this structure moves some data to a read-only section, so
> increases overall security, especially when the structure holds some
> function pointers.
>
> On a x86_64, with allmodconfig:
> Before:
> ======
>    text	   data	    bss	    dec	    hex	filename
>    8567	   2144	      0	  10711	   29d7	drivers/thermal/imx91_thermal.o
>
> After:
> =====
>    text	   data	    bss	    dec	    hex	filename
>    8695	   2016	      0	  10711	   29d7	drivers/thermal/imx91_thermal.o
>
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> ---

Reviewed-by: Frank Li <Frank.Li@nxp.com>

> Compile tested only.
> ---
>  drivers/thermal/imx91_thermal.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/thermal/imx91_thermal.c b/drivers/thermal/imx91_thermal.c
> index 25915bb702be..892a25440e06 100644
> --- a/drivers/thermal/imx91_thermal.c
> +++ b/drivers/thermal/imx91_thermal.c
> @@ -225,7 +225,7 @@ static int imx91_tmu_change_mode(struct thermal_zone_device *tz, enum thermal_de
>  	return 0;
>  }
>
> -static struct thermal_zone_device_ops tmu_tz_ops = {
> +static const struct thermal_zone_device_ops tmu_tz_ops = {
>  	.get_temp = imx91_tmu_get_temp,
>  	.change_mode = imx91_tmu_change_mode,
>  	.set_trips = imx91_tmu_set_trips,
> --
> 2.55.0
>
>


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-08-10 19:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-08 20:23 [PATCH] thermal/drivers/imx9: Constify struct thermal_zone_device_ops Christophe JAILLET
2026-08-08 20:32 ` sashiko-bot
2026-08-10 19:09 ` Frank Li

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.