aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Keeping <john@metanate.com>2021-09-23 15:06:43 +0100
committerYordan Karadzhov (VMware) <y.karadz@gmail.com>2021-09-27 12:25:56 +0300
commite688aa869887e53fe76b4044b7b20aab90897877 (patch)
treecdf5dd4781144cf0173b2029fc8ed233edad32ca
parentfadccda572dbf499140694dfa07db650c1e30424 (diff)
downloadkernel-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.c9
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;
}
/**