From: Karel Zak Date: Tue, 16 Apr 2019 08:51:35 +0000 (+0200) Subject: chcpu: fix memory leak X-Git-Tag: v2.34-rc1~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f8787d09405c7a8558f94d44186369422516a6f;p=thirdparty%2Futil-linux.git chcpu: fix memory leak The CPU set has been allocated more than once. Signed-off-by: Karel Zak --- diff --git a/sys-utils/chcpu.c b/sys-utils/chcpu.c index 36c47affdc..4060a4ca4a 100644 --- a/sys-utils/chcpu.c +++ b/sys-utils/chcpu.c @@ -262,7 +262,7 @@ static void __attribute__((__noreturn__)) usage(void) int main(int argc, char *argv[]) { struct path_cxt *sys = NULL; /* _PATH_SYS_CPU handler */ - cpu_set_t *cpu_set; + cpu_set_t *cpu_set = NULL; size_t setsize; int cmd = -1; int c, rc; @@ -301,12 +301,13 @@ int main(int argc, char *argv[]) if (ul_path_access(sys, F_OK, "online") == 0) ul_path_readf_cpulist(sys, &cpu_set, maxcpus, "online"); - - setsize = CPU_ALLOC_SIZE(maxcpus); - cpu_set = CPU_ALLOC(maxcpus); + else + cpu_set = CPU_ALLOC(maxcpus); if (!cpu_set) err(EXIT_FAILURE, _("cpuset_alloc failed")); + setsize = CPU_ALLOC_SIZE(maxcpus); + while ((c = getopt_long(argc, argv, "c:d:e:g:hp:rV", longopts, NULL)) != -1) { err_exclusive_options(c, longopts, excl, excl_st);