diff options
author | John Keeping <john@metanate.com> | 2021-09-23 15:06:43 +0100 |
---|---|---|
committer | Yordan Karadzhov (VMware) <y.karadz@gmail.com> | 2021-09-27 12:25:56 +0300 |
commit | e688aa869887e53fe76b4044b7b20aab90897877 (patch) | |
tree | cdf5dd4781144cf0173b2029fc8ed233edad32ca | |
parent | fadccda572dbf499140694dfa07db650c1e30424 (diff) | |
download | kernel-shark-e688aa869887e53fe76b4044b7b20aab90897877.tar.gz |
kernel-shark: Handle traces with sched_wakeup but not sched_waking
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.
Link: https://lore.kernel.org/linux-trace-devel/20210923140643.3975473-1-john@metanate.com
Fixes: b39499d (kernel-shark: Speed-up the sched_events plugin)
Signed-off-by: John Keeping <john@metanate.com>
Signed-off-by: Yordan Karadzhov (VMware) <y.karadz@gmail.com>
-rw-r--r-- | src/libkshark-tepdata.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libkshark-tepdata.c b/src/libkshark-tepdata.c index 865ca82b..9740ed9c 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; } /** |