Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

thermal/netlink: Prevent userspace segmentation fault by adjusting UAPI header

The intel-lpmd tool [1], which uses the THERMAL_GENL_ATTR_CPU_CAPABILITY
attribute to receive HFI events from kernel space, encounters a
segmentation fault after commit 1773572863c4 ("thermal: netlink: Add the
commands and the events for the thresholds").

The issue arises because the THERMAL_GENL_ATTR_CPU_CAPABILITY raw value
was changed while intel_lpmd still uses the old value.

Although intel_lpmd can be updated to check the THERMAL_GENL_VERSION and
use the appropriate THERMAL_GENL_ATTR_CPU_CAPABILITY value, the commit
itself is questionable.

The commit introduced a new element in the middle of enum thermal_genl_attr,
which affects many existing attributes and introduces potential risks
and unnecessary maintenance burdens for userspace thermal netlink event
users.

Solve the issue by moving the newly introduced
THERMAL_GENL_ATTR_TZ_PREV_TEMP attribute to the end of the
enum thermal_genl_attr. This ensures that all existing thermal generic
netlink attributes remain unaffected.

Link: https://github.com/intel/intel-lpmd [1]
Fixes: 1773572863c4 ("thermal: netlink: Add the commands and the events for the thresholds")
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Reviewed-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Link: https://patch.msgid.link/20250208074907.5679-1-rui.zhang@intel.com
[ rjw: Subject edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

authored by

Zhang Rui and committed by
Rafael J. Wysocki
c195b9c6 a64dcfb4

+1 -1
+1 -1
include/uapi/linux/thermal.h
··· 30 30 THERMAL_GENL_ATTR_TZ, 31 31 THERMAL_GENL_ATTR_TZ_ID, 32 32 THERMAL_GENL_ATTR_TZ_TEMP, 33 - THERMAL_GENL_ATTR_TZ_PREV_TEMP, 34 33 THERMAL_GENL_ATTR_TZ_TRIP, 35 34 THERMAL_GENL_ATTR_TZ_TRIP_ID, 36 35 THERMAL_GENL_ATTR_TZ_TRIP_TYPE, ··· 53 54 THERMAL_GENL_ATTR_THRESHOLD, 54 55 THERMAL_GENL_ATTR_THRESHOLD_TEMP, 55 56 THERMAL_GENL_ATTR_THRESHOLD_DIRECTION, 57 + THERMAL_GENL_ATTR_TZ_PREV_TEMP, 56 58 __THERMAL_GENL_ATTR_MAX, 57 59 }; 58 60 #define THERMAL_GENL_ATTR_MAX (__THERMAL_GENL_ATTR_MAX - 1)