linux/drivers/thermal
Srinivas Pandruvada b5d68f84f4 thermal: intel: powerclamp: Fix NULL pointer access issue
If cur_state for the powerclamp cooling device is set to the default
minimum state of 0, without setting first to cur_state > 0, this results
in NULL pointer access.

This NULL pointer access happens in the powercap core idle-inject
function idle_inject_set_duration() as there is no NULL check for
idle_inject_device pointer. This pointer must be allocated by calling
idle_inject_register() or idle_inject_register_full().

In the function powerclamp_set_cur_state(), idle_inject_device pointer
is allocated only when the cur_state > 0. But setting 0 without changing
to any other state, idle_inject_set_duration() will be called with a
NULL idle_inject_device pointer.

To address this, just return from powerclamp_set_cur_state() if the
current cooling device state is the same as the last one. Since the
power-up default cooling device state is 0, changing the state to 0
again here will return without calling idle_inject_set_duration().

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Fixes: 8526eb7fc7 ("thermal: intel: powerclamp: Use powercap idle-inject feature")
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=217386
Tested-by: Risto A. Paju <teknohog@iki.fi>
Cc: 6.3+ <stable@kernel.org> # 6.3+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2023-05-04 20:30:18 +02:00
..
broadcom thermal/drivers/bcm2835: Remove buggy call to thermal_of_zone_unregister 2023-04-07 18:36:28 +02:00
intel thermal: intel: powerclamp: Fix NULL pointer access issue 2023-05-04 20:30:18 +02:00
mediatek thermal/drivers/mediatek: Use of_address_to_resource() 2023-04-26 10:38:34 +02:00
qcom thermal/hwmon: Use the right device for devm_thermal_add_hwmon_sysfs() 2023-03-03 20:45:02 +01:00
samsung thermal/core: Use the thermal zone 'devdata' accessor in thermal located drivers 2023-03-03 20:45:02 +01:00
st thermal/drivers/stm: Don't set no_hwmon to false 2023-04-01 20:51:45 +02:00
tegra thermal/drivers/tegra-bpmp: Handle offline zones 2023-04-07 10:31:33 +02:00
ti-soc-thermal - Add more thermal zone device encapsulation: prevent setting 2023-04-03 20:43:32 +02:00
amlogic_thermal.c thermal: amlogic: Use dev_err_probe() 2023-04-07 11:18:28 +02:00
armada_thermal.c thermal: Remove debug or error messages in get_temp() ops 2023-03-03 20:45:02 +01:00
cpufreq_cooling.c - Add more thermal zone device encapsulation: prevent setting 2023-04-03 20:43:32 +02:00
cpuidle_cooling.c More thermal control updates for 6.4-rc1 2023-05-03 11:46:01 -07:00
da9062-thermal.c thermal/drivers/da9062: Don't access the thermal zone device fields 2023-03-03 20:45:03 +01:00
db8500_thermal.c thermal/drivers/db8500: Use driver dev instead of tz->device 2023-04-01 20:51:45 +02:00
devfreq_cooling.c thermal/core: Relocate the traces definition in thermal directory 2023-04-01 20:51:45 +02:00
dove_thermal.c thermal: Remove debug or error messages in get_temp() ops 2023-03-03 20:45:02 +01:00
gov_bang_bang.c thermal/core/governors: Use thermal_zone_get_trip() instead of ops functions 2023-01-06 14:14:47 +01:00
gov_fair_share.c thermal/core: Relocate the traces definition in thermal directory 2023-04-01 20:51:45 +02:00
gov_power_allocator.c thermal/core: Relocate the traces definition in thermal directory 2023-04-01 20:51:45 +02:00
gov_step_wise.c thermal: gov_step_wise: Adjust code logic to match comment 2023-04-27 19:17:11 +02:00
gov_user_space.c thermal: gov_user_space: Do not lock thermal zone mutex 2022-08-30 20:18:47 +02:00
hisi_thermal.c thermal/drivers/hisi: Use devm_platform_ioremap_resource() 2023-04-01 20:51:45 +02:00
imx8mm_thermal.c thermal: Use of_property_present() for testing DT property presence 2023-03-30 19:26:44 +02:00
imx_sc_thermal.c thermal/hwmon: Use the right device for devm_thermal_add_hwmon_sysfs() 2023-03-03 20:45:02 +01:00
imx_thermal.c - Add more thermal zone device encapsulation: prevent setting 2023-04-03 20:43:32 +02:00
k3_bandgap.c thermal/hwmon: Use the right device for devm_thermal_add_hwmon_sysfs() 2023-03-03 20:45:02 +01:00
k3_j72xx_bandgap.c thermal/core: Use the thermal zone 'devdata' accessor in thermal located drivers 2023-03-03 20:45:02 +01:00
Kconfig thermal/drivers/mediatek: Relocate driver to mediatek folder 2023-02-15 17:28:25 +01:00
khadas_mcu_fan.c thermal/core: Make cooling device state change private 2021-01-19 22:31:10 +01:00
kirkwood_thermal.c thermal: Remove debug or error messages in get_temp() ops 2023-03-03 20:45:02 +01:00
Makefile thermal/core: Relocate the traces definition in thermal directory 2023-04-01 20:51:45 +02:00
max77620_thermal.c thermal: Remove debug or error messages in get_temp() ops 2023-03-03 20:45:02 +01:00
qoriq_thermal.c thermal/hwmon: Use the right device for devm_thermal_add_hwmon_sysfs() 2023-03-03 20:45:02 +01:00
rcar_gen3_thermal.c thermal/drivers/rcar_gen3_thermal: Remove R-Car H3 ES1.* handling 2023-04-01 20:51:45 +02:00
rcar_thermal.c thermal/hwmon: Do not set no_hwmon before calling thermal_add_hwmon_sysfs() 2023-03-03 20:45:02 +01:00
rockchip_thermal.c thermal/drivers/rockchip: use devm_reset_control_array_get_exclusive() 2023-04-07 10:31:33 +02:00
rzg2l_thermal.c thermal/hwmon: Do not set no_hwmon before calling thermal_add_hwmon_sysfs() 2023-03-03 20:45:02 +01:00
spear_thermal.c thermal/drivers/spear: Don't use tz->device but pdev->dev 2023-03-03 20:45:02 +01:00
sprd_thermal.c thermal/core: Use the thermal zone 'devdata' accessor in thermal located drivers 2023-03-03 20:45:02 +01:00
sun8i_thermal.c thermal/hwmon: Use the right device for devm_thermal_add_hwmon_sysfs() 2023-03-03 20:45:02 +01:00
thermal_acpi.c thermal: ACPI: Make helpers retrieve temperature only 2023-02-02 15:26:45 +01:00
thermal_core.c thermal: core: Encapsulate tz->device field 2023-04-27 19:20:12 +02:00
thermal_core.h thermal: core: Introduce thermal_cooling_device_update() 2023-03-22 15:20:38 +01:00
thermal_helpers.c thermal/core: Relocate the traces definition in thermal directory 2023-04-01 20:51:45 +02:00
thermal_hwmon.c thermal: thermal_hwmon: Revert recent message adjustment 2023-03-29 20:40:10 +02:00
thermal_hwmon.h thermal/hwmon: Use the right device for devm_thermal_add_hwmon_sysfs() 2023-03-03 20:45:02 +01:00
thermal_mmio.c thermal/core: Use the thermal zone 'devdata' accessor in thermal located drivers 2023-03-03 20:45:02 +01:00
thermal_netlink.c thermal/core: Fix unregistering netlink at thermal init time 2023-01-25 16:40:39 +01:00
thermal_netlink.h thermal/core: Fix unregistering netlink at thermal init time 2023-01-25 16:40:39 +01:00
thermal_of.c thermal/of: Unexport unused OF functions 2023-04-07 18:36:28 +02:00
thermal_sysfs.c thermal: core: Drop excessive lockdep_assert_held() calls 2023-03-28 20:49:47 +02:00
thermal_trace_ipa.h thermal/core: Relocate the traces definition in thermal directory 2023-04-01 20:51:45 +02:00
thermal_trace.h thermal/core: Relocate the traces definition in thermal directory 2023-04-01 20:51:45 +02:00
thermal_trip.c thermal/core: Move the thermal trip code to a dedicated file 2023-01-25 16:40:39 +01:00
thermal-generic-adc.c thermal: Remove debug or error messages in get_temp() ops 2023-03-03 20:45:02 +01:00
uniphier_thermal.c thermal/core: Use the thermal zone 'devdata' accessor in thermal located drivers 2023-03-03 20:45:02 +01:00