cpuidle: sysfs: Fix the overlap for showing available governors
authorHanjun Guo <guohanjun@huawei.com>
Tue, 19 May 2020 06:25:20 +0000 (14:25 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 19 May 2020 15:41:17 +0000 (17:41 +0200)
When showing the available governors, it's "%s " in scnprintf(),
not "%s", so if the governor name has 15 characters, it will
overlap with the later one, fix it by adding one more for the
size.

While we are at it, fix the minor coding style issue and remove
the "/sizeof(char)" since sizeof(char) always equals 1.

Signed-off-by: Hanjun Guo <guohanjun@huawei.com>
Reviewed-by: Doug Smythies <dsmythies@telus.net>
Tested-by: Doug Smythies <dsmythies@telus.net>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpuidle/sysfs.c

index d3ef1d7..477b05a 100644 (file)
@@ -35,10 +35,10 @@ static ssize_t show_available_governors(struct device *dev,
 
        mutex_lock(&cpuidle_lock);
        list_for_each_entry(tmp, &cpuidle_governors, governor_list) {
-               if (i >= (ssize_t) ((PAGE_SIZE/sizeof(char)) -
-                                   CPUIDLE_NAME_LEN - 2))
+               if (i >= (ssize_t) (PAGE_SIZE - (CPUIDLE_NAME_LEN + 2)))
                        goto out;
-               i += scnprintf(&buf[i], CPUIDLE_NAME_LEN, "%s ", tmp->name);
+
+               i += scnprintf(&buf[i], CPUIDLE_NAME_LEN + 1, "%s ", tmp->name);
        }
 
 out: