]> git.proxmox.com Git - mirror_lxcfs.git/commitdiff
proc_cpuview: cleanup read_cpu_cfs_param()
authorChristian Brauner <christian.brauner@ubuntu.com>
Wed, 10 Jun 2020 08:05:26 +0000 (10:05 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Wed, 10 Jun 2020 08:33:29 +0000 (10:33 +0200)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/proc_cpuview.c

index 7d78ae3872c175354f235f3d4211bc05fed356d8..a54933638864bc150a206dddde596e50b21f9c97 100644 (file)
@@ -409,23 +409,23 @@ static uint64_t diff_cpu_usage(struct cpuacct_usage *older,
 static bool read_cpu_cfs_param(const char *cg, const char *param, int64_t *value)
 {
        __do_free char *str = NULL;
-       char file[11 + 6 + 1]; /* cpu.cfs__us + quota/period + \0 */
+       char file[STRLITERALLEN("cpu.cfs_period_us") + 1];
        bool first = true;
+       int ret;
 
-       if (!pure_unified_layout(cgroup_ops)) {
-               snprintf(file, sizeof(file), "cpu.cfs_%s_us", param);
-        } else {
-               strcpy(file, "cpu.max");
+       if (pure_unified_layout(cgroup_ops)) {
                first = !strcmp(param, "quota");
+               ret = snprintf(file, sizeof(file), "cpu.max");
+       } else {
+               ret = snprintf(file, sizeof(file), "cpu.cfs_%s_us", param);
        }
-
-       if (!cgroup_ops->get(cgroup_ops, "cpu", cg, file, &str))
+       if (ret < 0 || (size_t)ret >= sizeof(file))
                return false;
 
-       if (sscanf(str, first ? "%" PRId64 : "%*d %" PRId64, value) != 1)
+       if (!cgroup_ops->get(cgroup_ops, "cpu", cg, file, &str))
                return false;
 
-       return true;
+       return sscanf(str, first ? "%" PRId64 : "%*d %" PRId64, value) == 1;
 }
 
 /*