• S
    lib tools traceevent: Add back pevent assignment in __pevent_parse_format() · 101782ea
    Steven Rostedt 提交于
    Even though with the change of commit commit 2b29175d "tools lib
    traceevent: Carve out events format parsing routine", allowed
    __pevent_parse_format() to parse an event without the need of a pevent
    handler, the event still needs to assign the pevent handed to it.
    
    There's no problem with assigning it if the pevent is NULL, as the
    event->pevent would be NULL without the assignment. But function parsing
    handlers may be assigned to the pevent handler to help in parsing the
    event. If there's no pevent then there would not be any function
    handlers, but if the pevent isn't assigned first before parsing the
    event, it wont honor the function handlers that were assigned.
    
    Worse yet, the current code crashes if an event has a function that it
    tries to parse. For example:
    
     # perf record -e scsi:scsi_dispatch_cmd_timeout
     Segmentation fault (core dumped)
    
    This happens because the scsi_dispatch_cmd_timeout event format has the following:
    
      scsi_trace_parse_cdb(p, __get_dynamic_array(cmnd), REC->cmd_len)
    
    which hasn't been defined by the pevent code.
    Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
    Reviewed-by: NNamhyung Kim <namhyung@kernel.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: http://lkml.kernel.org/r/1349136831.22822.133.camel@gandalf.local.homeSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    101782ea
event-parse.c 117.6 KB