linux/drivers/thermal
Srinivas Pandruvada 68b99e94a4 thermal: intel_powerclamp: Use get_cpu() instead of smp_processor_id() to avoid crash
When CPU 0 is offline and intel_powerclamp is used to inject
idle, it generates kernel BUG:

BUG: using smp_processor_id() in preemptible [00000000] code: bash/15687
caller is debug_smp_processor_id+0x17/0x20
CPU: 4 PID: 15687 Comm: bash Not tainted 5.19.0-rc7+ #57
Call Trace:
<TASK>
dump_stack_lvl+0x49/0x63
dump_stack+0x10/0x16
check_preemption_disabled+0xdd/0xe0
debug_smp_processor_id+0x17/0x20
powerclamp_set_cur_state+0x7f/0xf9 [intel_powerclamp]
...
...

Here CPU 0 is the control CPU by default and changed to the current CPU,
if CPU 0 offlined. This check has to be performed under cpus_read_lock(),
hence the above warning.

Use get_cpu() instead of smp_processor_id() to avoid this BUG.

Suggested-by: Chen Yu <yu.c.chen@intel.com>
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
[ rjw: Subject edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2022-09-21 20:27:06 +02:00
..
broadcom thermal/drivers/broadcom: Fix potential NULL dereference in sr_thermal_probe 2022-05-19 12:11:52 +02:00
intel thermal: intel_powerclamp: Use get_cpu() instead of smp_processor_id() to avoid crash 2022-09-21 20:27:06 +02:00
qcom thermal/drivers/qcom/spmi-adc-tm5: Register thermal zones as hwmon sensors 2022-07-28 17:29:51 +02:00
samsung thermal/drivers/exynos: Fix an error code in exynos_tmu_probe() 2021-08-14 12:40:35 +02:00
st
tegra thermal/core: Rename 'trips' to 'num_trips' 2022-07-28 17:29:56 +02:00
ti-soc-thermal thermal/ti-soc-thermal: Fix comment typo 2022-07-28 17:29:51 +02:00
amlogic_thermal.c
armada_thermal.c
cpufreq_cooling.c Thermal control updates for 5.20-rc1 2022-08-02 11:27:53 -07:00
cpuidle_cooling.c
da9062-thermal.c
db8500_thermal.c thermal/drivers/u8500: Remove unnecessary print function dev_err() 2022-07-28 17:29:50 +02:00
devfreq_cooling.c Thermal control updates for 5.20-rc1 2022-08-02 11:27:53 -07:00
dove_thermal.c
gov_bang_bang.c
gov_fair_share.c thermal/core: Rename 'trips' to 'num_trips' 2022-07-28 17:29:56 +02:00
gov_power_allocator.c thermal/core: Rename 'trips' to 'num_trips' 2022-07-28 17:29:56 +02:00
gov_step_wise.c thermal/core: Remove DROP_FULL and RAISE_FULL 2022-07-28 17:29:47 +02:00
gov_user_space.c thermal/governor: Remove deprecated information 2022-04-22 16:47:40 +02:00
hisi_thermal.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_320.RULE 2022-06-10 14:51:36 +02:00
imx8mm_thermal.c thermal/drivers/imx8mm: Enable ADC when enabling monitor 2021-12-02 11:12:24 +01:00
imx_sc_thermal.c thermal/drivers/imx_sc_thermal: Fix refcount leak in imx_sc_thermal_probe 2022-05-19 12:11:53 +02:00
imx_thermal.c thermal/drivers/imx: Implement runtime PM support 2021-11-30 15:42:28 +01:00
k3_bandgap.c thermal/drivers/k3: Add hwmon support 2022-05-19 12:11:51 +02:00
k3_j72xx_bandgap.c thermal/drivers/k3_j72xx_bandgap: Make k3_j72xx_bandgap_j721e_data and k3_j72xx_bandgap_j7200_data static 2022-07-28 17:29:48 +02:00
Kconfig thermal: Drop obsolete dependency on COMPILE_TEST 2022-08-03 19:15:31 +02:00
khadas_mcu_fan.c
kirkwood_thermal.c
Makefile thermal: k3_j72xx_bandgap: Add the bandgap driver support 2022-05-19 12:11:53 +02:00
max77620_thermal.c
mtk_thermal.c
qoriq_thermal.c
rcar_gen3_thermal.c Thermal control updates for 5.20-rc1 2022-08-02 11:27:53 -07:00
rcar_thermal.c thermal/drivers/rcar_thermal: Use platform_get_irq_optional() to get the interrupt 2022-05-19 12:11:50 +02:00
rockchip_thermal.c thermal/drivers/rockchip_thermal: Allow more resets for tsadc node 2021-10-17 00:15:09 +02:00
rzg2l_thermal.c thermal/drivers/rzg2l: Fix comments 2022-07-28 17:29:49 +02:00
spear_thermal.c
sprd_thermal.c
sun8i_thermal.c thermal/drivers/sun8i: Fix typo in comment 2022-07-28 17:29:49 +02:00
thermal_core.c thermal/core: Add missing EXPORT_SYMBOL_GPL 2022-08-15 20:38:19 +02:00
thermal_core.h thermal/core: Move thermal_set_delay_jiffies to static 2022-07-28 17:29:55 +02:00
thermal_helpers.c thermal/core: Rename 'trips' to 'num_trips' 2022-07-28 17:29:56 +02:00
thermal_hwmon.c thermal/drivers/thermal_hwmon: Use hwmon_device_register_for_thermal() 2022-05-22 11:32:31 -07:00
thermal_hwmon.h
thermal_mmio.c thermal/drivers/thermal_mmio: Constify static struct thermal_mmio_ops 2021-10-07 15:18:31 +02:00
thermal_netlink.c thermal/core: Rename 'trips' to 'num_trips' 2022-07-28 17:29:56 +02:00
thermal_netlink.h thermal: netlink: Fix parameter type of thermal_genl_cpu_capability_event() stub 2022-02-07 20:45:42 +01:00
thermal_of.c thermal/of: Initialize trip points separately 2022-07-28 17:29:57 +02:00
thermal_sysfs.c thermal: sysfs: Fix cooling_device_stats_setup() error code path 2022-08-03 19:14:26 +02:00
thermal-generic-adc.c
uniphier_thermal.c thermal/drivers/uniphier: Add compatible string for NX1 SoC 2021-10-18 14:00:13 +02:00