thermal/netlink: Prevent userspace segmentation fault by adjusting UAPI header
authorZhang Rui <rui.zhang@intel.com>
Sat, 8 Feb 2025 07:49:07 +0000 (15:49 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 11 Feb 2025 19:53:14 +0000 (20:53 +0100)
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
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>
include/uapi/linux/thermal.h

index 349718c271ebf1c03642ee714a9f25fbc7f7fd42..46a2633d33aaa4b6d07b527eaee783cb7bfa7c46 100644 (file)
@@ -30,7 +30,6 @@ enum thermal_genl_attr {
        THERMAL_GENL_ATTR_TZ,
        THERMAL_GENL_ATTR_TZ_ID,
        THERMAL_GENL_ATTR_TZ_TEMP,
-       THERMAL_GENL_ATTR_TZ_PREV_TEMP,
        THERMAL_GENL_ATTR_TZ_TRIP,
        THERMAL_GENL_ATTR_TZ_TRIP_ID,
        THERMAL_GENL_ATTR_TZ_TRIP_TYPE,
@@ -54,6 +53,7 @@ enum thermal_genl_attr {
        THERMAL_GENL_ATTR_THRESHOLD,
        THERMAL_GENL_ATTR_THRESHOLD_TEMP,
        THERMAL_GENL_ATTR_THRESHOLD_DIRECTION,
+       THERMAL_GENL_ATTR_TZ_PREV_TEMP,
        __THERMAL_GENL_ATTR_MAX,
 };
 #define THERMAL_GENL_ATTR_MAX (__THERMAL_GENL_ATTR_MAX - 1)