aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf
diff options
context:
space:
mode:
authorNamhyung Kim <namhyung.kim@lge.com>2013-03-21 03:18:45 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2013-03-21 12:12:28 -0400
commit5a6fd27ad73fef0ed39a00236acbc3a17834672a (patch)
tree0dbe82d5625aca21ec96ad032e4375ba613b0e36 /tools/perf
parent454f8c7d26fa7e1545df4efca5d9ba929ccef1e8 (diff)
perf tools: Get rid of malloc_or_die() in trace-event-info.c
Check return value of malloc and fail if NULL. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Steven Rostedt <rostedt@goodmis.org> Link: http://lkml.kernel.org/r/1363850332-25297-3-git-send-email-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
-rw-r--r--tools/perf/util/trace-event-info.c48
1 files changed, 30 insertions, 18 deletions
diff --git a/tools/perf/util/trace-event-info.c b/tools/perf/util/trace-event-info.c
index 81c673282ed4..91db6e8e4493 100644
--- a/tools/perf/util/trace-event-info.c
+++ b/tools/perf/util/trace-event-info.c
@@ -47,16 +47,6 @@ static const char *output_file = "trace.info";
47static int output_fd; 47static int output_fd;
48 48
49 49
50static void *malloc_or_die(unsigned int size)
51{
52 void *data;
53
54 data = malloc(size);
55 if (!data)
56 die("malloc");
57 return data;
58}
59
60static const char *find_debugfs(void) 50static const char *find_debugfs(void)
61{ 51{
62 const char *path = perf_debugfs_mount(NULL); 52 const char *path = perf_debugfs_mount(NULL);
@@ -209,7 +199,7 @@ static bool name_in_tp_list(char *sys, struct tracepoint_path *tps)
209 return false; 199 return false;
210} 200}
211 201
212static void copy_event_system(const char *sys, struct tracepoint_path *tps) 202static int copy_event_system(const char *sys, struct tracepoint_path *tps)
213{ 203{
214 struct dirent *dent; 204 struct dirent *dent;
215 struct stat st; 205 struct stat st;
@@ -217,6 +207,7 @@ static void copy_event_system(const char *sys, struct tracepoint_path *tps)
217 DIR *dir; 207 DIR *dir;
218 int count = 0; 208 int count = 0;
219 int ret; 209 int ret;
210 int err;
220 211
221 dir = opendir(sys); 212 dir = opendir(sys);
222 if (!dir) 213 if (!dir)
@@ -228,7 +219,11 @@ static void copy_event_system(const char *sys, struct tracepoint_path *tps)
228 strcmp(dent->d_name, "..") == 0 || 219 strcmp(dent->d_name, "..") == 0 ||
229 !name_in_tp_list(dent->d_name, tps)) 220 !name_in_tp_list(dent->d_name, tps))
230 continue; 221 continue;
231 format = malloc_or_die(strlen(sys) + strlen(dent->d_name) + 10); 222 format = malloc(strlen(sys) + strlen(dent->d_name) + 10);
223 if (!format) {
224 err = -ENOMEM;
225 goto out;
226 }
232 sprintf(format, "%s/%s/format", sys, dent->d_name); 227 sprintf(format, "%s/%s/format", sys, dent->d_name);
233 ret = stat(format, &st); 228 ret = stat(format, &st);
234 free(format); 229 free(format);
@@ -246,16 +241,22 @@ static void copy_event_system(const char *sys, struct tracepoint_path *tps)
246 strcmp(dent->d_name, "..") == 0 || 241 strcmp(dent->d_name, "..") == 0 ||
247 !name_in_tp_list(dent->d_name, tps)) 242 !name_in_tp_list(dent->d_name, tps))
248 continue; 243 continue;
249 format = malloc_or_die(strlen(sys) + strlen(dent->d_name) + 10); 244 format = malloc(strlen(sys) + strlen(dent->d_name) + 10);
245 if (!format) {
246 err = -ENOMEM;
247 goto out;
248 }
250 sprintf(format, "%s/%s/format", sys, dent->d_name); 249 sprintf(format, "%s/%s/format", sys, dent->d_name);
251 ret = stat(format, &st); 250 ret = stat(format, &st);
252 251
253 if (ret >= 0) 252 if (ret >= 0)
254 record_file(format, 8); 253 record_file(format, 8);
255
256 free(format); 254 free(format);
257 } 255 }
256 err = 0;
257out:
258 closedir(dir); 258 closedir(dir);
259 return err;
259} 260}
260 261
261static void read_ftrace_files(struct tracepoint_path *tps) 262static void read_ftrace_files(struct tracepoint_path *tps)
@@ -282,7 +283,7 @@ static bool system_in_tp_list(char *sys, struct tracepoint_path *tps)
282 return false; 283 return false;
283} 284}
284 285
285static void read_event_files(struct tracepoint_path *tps) 286static int read_event_files(struct tracepoint_path *tps)
286{ 287{
287 struct dirent *dent; 288 struct dirent *dent;
288 struct stat st; 289 struct stat st;
@@ -291,6 +292,7 @@ static void read_event_files(struct tracepoint_path *tps)
291 DIR *dir; 292 DIR *dir;
292 int count = 0; 293 int count = 0;
293 int ret; 294 int ret;
295 int err;
294 296
295 path = get_tracing_file("events"); 297 path = get_tracing_file("events");
296 if (!path) 298 if (!path)
@@ -320,7 +322,11 @@ static void read_event_files(struct tracepoint_path *tps)
320 strcmp(dent->d_name, "ftrace") == 0 || 322 strcmp(dent->d_name, "ftrace") == 0 ||
321 !system_in_tp_list(dent->d_name, tps)) 323 !system_in_tp_list(dent->d_name, tps))
322 continue; 324 continue;
323 sys = malloc_or_die(strlen(path) + strlen(dent->d_name) + 2); 325 sys = malloc(strlen(path) + strlen(dent->d_name) + 2);
326 if (!sys) {
327 err = -ENOMEM;
328 goto out;
329 }
324 sprintf(sys, "%s/%s", path, dent->d_name); 330 sprintf(sys, "%s/%s", path, dent->d_name);
325 ret = stat(sys, &st); 331 ret = stat(sys, &st);
326 if (ret >= 0) { 332 if (ret >= 0) {
@@ -329,9 +335,12 @@ static void read_event_files(struct tracepoint_path *tps)
329 } 335 }
330 free(sys); 336 free(sys);
331 } 337 }
332 338 err = 0;
339out:
333 closedir(dir); 340 closedir(dir);
334 put_tracing_file(path); 341 put_tracing_file(path);
342
343 return err;
335} 344}
336 345
337static void read_proc_kallsyms(void) 346static void read_proc_kallsyms(void)
@@ -463,7 +472,10 @@ struct tracing_data *tracing_data_get(struct list_head *pattrs,
463 if (!tps) 472 if (!tps)
464 return NULL; 473 return NULL;
465 474
466 tdata = malloc_or_die(sizeof(*tdata)); 475 tdata = malloc(sizeof(*tdata));
476 if (!tdata)
477 return NULL;
478
467 tdata->temp = temp; 479 tdata->temp = temp;
468 tdata->size = 0; 480 tdata->size = 0;
469 481