aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-lock.c
diff options
context:
space:
mode:
authorDavidlohr Bueso <davidlohr@hp.com>2013-09-08 22:19:15 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2013-10-09 10:23:39 -0400
commit0a98c7febf55325ebac4f28289a9433f4b66ed0e (patch)
tree7623723aa5632c99f0dc0e09718270a2e023cac5 /tools/perf/builtin-lock.c
parentb33492ade49a223a666e582d0c63566609e7014b (diff)
perf lock: Plug some memleaks
Address some trivial leaks. Signed-off-by: Davidlohr Bueso <davidlohr@hp.com> Cc: Aswin Chandramouleeswaran <aswin@hp.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Hitoshi Mitake <mitake@dcl.info.waseda.ac.jp> Cc: Ingo Molnar <mingo@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1378693159-8747-4-git-send-email-davidlohr@hp.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-lock.c')
-rw-r--r--tools/perf/builtin-lock.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c
index d3188629cbaf..77843478a27a 100644
--- a/tools/perf/builtin-lock.c
+++ b/tools/perf/builtin-lock.c
@@ -321,10 +321,12 @@ static struct lock_stat *lock_stat_findnew(void *addr, const char *name)
321 321
322 new->addr = addr; 322 new->addr = addr;
323 new->name = zalloc(sizeof(char) * strlen(name) + 1); 323 new->name = zalloc(sizeof(char) * strlen(name) + 1);
324 if (!new->name) 324 if (!new->name) {
325 free(new);
325 goto alloc_failed; 326 goto alloc_failed;
326 strcpy(new->name, name); 327 }
327 328
329 strcpy(new->name, name);
328 new->wait_time_min = ULLONG_MAX; 330 new->wait_time_min = ULLONG_MAX;
329 331
330 list_add(&new->hash_entry, entry); 332 list_add(&new->hash_entry, entry);
@@ -875,7 +877,7 @@ static int __cmd_record(int argc, const char **argv)
875 const char *record_args[] = { 877 const char *record_args[] = {
876 "record", "-R", "-m", "1024", "-c", "1", 878 "record", "-R", "-m", "1024", "-c", "1",
877 }; 879 };
878 unsigned int rec_argc, i, j; 880 unsigned int rec_argc, i, j, ret;
879 const char **rec_argv; 881 const char **rec_argv;
880 882
881 for (i = 0; i < ARRAY_SIZE(lock_tracepoints); i++) { 883 for (i = 0; i < ARRAY_SIZE(lock_tracepoints); i++) {
@@ -892,7 +894,7 @@ static int __cmd_record(int argc, const char **argv)
892 rec_argc += 2 * ARRAY_SIZE(lock_tracepoints); 894 rec_argc += 2 * ARRAY_SIZE(lock_tracepoints);
893 895
894 rec_argv = calloc(rec_argc + 1, sizeof(char *)); 896 rec_argv = calloc(rec_argc + 1, sizeof(char *));
895 if (rec_argv == NULL) 897 if (!rec_argv)
896 return -ENOMEM; 898 return -ENOMEM;
897 899
898 for (i = 0; i < ARRAY_SIZE(record_args); i++) 900 for (i = 0; i < ARRAY_SIZE(record_args); i++)
@@ -908,7 +910,9 @@ static int __cmd_record(int argc, const char **argv)
908 910
909 BUG_ON(i != rec_argc); 911 BUG_ON(i != rec_argc);
910 912
911 return cmd_record(i, rec_argv, NULL); 913 ret = cmd_record(i, rec_argv, NULL);
914 free(rec_argv);
915 return ret;
912} 916}
913 917
914int cmd_lock(int argc, const char **argv, const char *prefix __maybe_unused) 918int cmd_lock(int argc, const char **argv, const char *prefix __maybe_unused)