]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
tools/cpupower: Fix incorrect size in cpuidle_state_disable()
authorKaushlendra Kumar <kaushlendra.kumar@intel.com>
Wed, 17 Sep 2025 05:08:20 +0000 (10:38 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Dec 2025 11:45:08 +0000 (12:45 +0100)
[ Upstream commit 23199d2aa6dcaf6dd2da772f93d2c94317d71459 ]

Fix incorrect size parameter passed to cpuidle_state_write_file() in
cpuidle_state_disable().

The function was incorrectly using sizeof(disable) which returns the
size of the unsigned int variable (4 bytes) instead of the actual
length of the string stored in the 'value' buffer.

Since 'value' is populated with snprintf() to contain the string
representation of the disable value, we should use the length
returned by snprintf() to get the correct string length for
writing to the sysfs file.

This ensures the correct number of bytes is written to the cpuidle
state disable file in sysfs.

Link: https://lore.kernel.org/r/20250917050820.1785377-1-kaushlendra.kumar@intel.com
Signed-off-by: Kaushlendra Kumar <kaushlendra.kumar@intel.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
tools/power/cpupower/lib/cpuidle.c

index 479c5971aa6da2599e661a10ed4207bc61baf17e..c15d0de12357fb0e0d38ff7e7561762a7a635f85 100644 (file)
@@ -231,6 +231,7 @@ int cpuidle_state_disable(unsigned int cpu,
 {
        char value[SYSFS_PATH_MAX];
        int bytes_written;
+       int len;
 
        if (cpuidle_state_count(cpu) <= idlestate)
                return -1;
@@ -239,10 +240,10 @@ int cpuidle_state_disable(unsigned int cpu,
                                 idlestate_value_files[IDLESTATE_DISABLE]))
                return -2;
 
-       snprintf(value, SYSFS_PATH_MAX, "%u", disable);
+       len = snprintf(value, SYSFS_PATH_MAX, "%u", disable);
 
        bytes_written = cpuidle_state_write_file(cpu, idlestate, "disable",
-                                                  value, sizeof(disable));
+                                                  value, len);
        if (bytes_written)
                return 0;
        return -3;