]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - tools/lib/traceevent/event-parse.c
lib tools traceevent: Add back pevent assignment in __pevent_parse_format()
[karo-tx-linux.git] / tools / lib / traceevent / event-parse.c
index 17c922145e885d46751914e71b53e397671d335c..f2989c525e48a6865729cff8962fca28d39532fc 100644 (file)
@@ -2602,6 +2602,9 @@ find_func_handler(struct pevent *pevent, char *func_name)
 {
        struct pevent_function_handler *func;
 
+       if (!pevent)
+               return NULL;
+
        for (func = pevent->func_handlers; func; func = func->next) {
                if (strcmp(func->name, func_name) == 0)
                        break;
@@ -4938,6 +4941,9 @@ enum pevent_errno __pevent_parse_format(struct event_format **eventp,
                goto event_alloc_failed;
        }
 
+       /* Add pevent to event so that it can be referenced */
+       event->pevent = pevent;
+
        ret = event_read_format(event);
        if (ret < 0) {
                ret = PEVENT_ERRNO__READ_FORMAT_FAILED;
@@ -5041,11 +5047,10 @@ enum pevent_errno pevent_parse_event(struct pevent *pevent, const char *buf,
        if (event == NULL)
                return ret;
 
-       /* Add pevent to event so that it can be referenced */
-       event->pevent = pevent;
-
-       if (add_event(pevent, event))
+       if (add_event(pevent, event)) {
+               ret = PEVENT_ERRNO__MEM_ALLOC_FAILED;
                goto event_add_failed;
+       }
 
 #define PRINT_ARGS 0
        if (PRINT_ARGS && event->print_fmt.args)
@@ -5054,9 +5059,7 @@ enum pevent_errno pevent_parse_event(struct pevent *pevent, const char *buf,
        return 0;
 
 event_add_failed:
-       free(event->system);
-       free(event->name);
-       free(event);
+       pevent_free_format(event);
        return ret;
 }