If sched_wakeup or sched_wakeup_new is avaiable but sched_waking is not, then define_wakeup_event() returns true even though waking_event_ptr is null. Change find_wakeup_event() to avoid overwriting the output parameter on error so that the define_wakeup_event() returns true iff *waking_event_ptr is non-null. Signed-off-by: John Keeping <john@xxxxxxxxxxxx> --- src/libkshark-tepdata.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libkshark-tepdata.c b/src/libkshark-tepdata.c index 865ca82..9740ed9 100644 --- a/src/libkshark-tepdata.c +++ b/src/libkshark-tepdata.c @@ -1868,9 +1868,14 @@ int kshark_tep_find_top_stream(struct kshark_context *kshark_ctx, static bool find_wakeup_event(struct tep_handle *tep, const char *wakeup_name, struct tep_event **waking_event_ptr) { - *waking_event_ptr = tep_find_event_by_name(tep, "sched", wakeup_name); + struct tep_event *event; + + event = tep_find_event_by_name(tep, "sched", wakeup_name); + + if (event) + *waking_event_ptr = event; - return (*waking_event_ptr)? true : false; + return !!event; } /** -- 2.33.0