diff options
| author | Namhyung Kim <namhyung.kim@lge.com> | 2012-09-06 22:49:46 -0400 |
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2012-09-07 11:15:07 -0400 |
| commit | 0ca8da00ad170c12c12350c3a2500591a7bec535 (patch) | |
| tree | b491d60e8e4958021420999a44da95072b9677c9 | |
| parent | 245c5a18433090da0e1a799bdb0faa78552b5992 (diff) | |
tools lib traceevent: Get rid of die() from pevent_register_event_handler
If memory allocation for handler fails, return gracefully instead of
calling die(). Note that casts to void * are needed because gcc
complained about discarding 'const' qualifier during implicit argument
cast.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Steven Rostedt <rostedt@goodmis.org>
Link: http://lkml.kernel.org/r/1346986187-5170-2-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
| -rw-r--r-- | tools/lib/traceevent/event-parse.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c index 6d5e75987a3d..17fd01d46e60 100644 --- a/tools/lib/traceevent/event-parse.c +++ b/tools/lib/traceevent/event-parse.c | |||
| @@ -5183,7 +5183,12 @@ int pevent_register_event_handler(struct pevent *pevent, | |||
| 5183 | 5183 | ||
| 5184 | not_found: | 5184 | not_found: |
| 5185 | /* Save for later use. */ | 5185 | /* Save for later use. */ |
| 5186 | handle = malloc_or_die(sizeof(*handle)); | 5186 | handle = malloc(sizeof(*handle)); |
| 5187 | if (!handle) { | ||
| 5188 | do_warning("Failed to allocate event handler"); | ||
| 5189 | return PEVENT_ERRNO__MEM_ALLOC_FAILED; | ||
| 5190 | } | ||
| 5191 | |||
| 5187 | memset(handle, 0, sizeof(*handle)); | 5192 | memset(handle, 0, sizeof(*handle)); |
| 5188 | handle->id = id; | 5193 | handle->id = id; |
| 5189 | if (event_name) | 5194 | if (event_name) |
| @@ -5193,7 +5198,11 @@ int pevent_register_event_handler(struct pevent *pevent, | |||
| 5193 | 5198 | ||
| 5194 | if ((event_name && !handle->event_name) || | 5199 | if ((event_name && !handle->event_name) || |
| 5195 | (sys_name && !handle->sys_name)) { | 5200 | (sys_name && !handle->sys_name)) { |
| 5196 | die("Failed to allocate event/sys name"); | 5201 | do_warning("Failed to allocate event/sys name"); |
| 5202 | free((void *)handle->event_name); | ||
| 5203 | free((void *)handle->sys_name); | ||
| 5204 | free(handle); | ||
| 5205 | return PEVENT_ERRNO__MEM_ALLOC_FAILED; | ||
| 5197 | } | 5206 | } |
| 5198 | 5207 | ||
| 5199 | handle->func = func; | 5208 | handle->func = func; |
