From: "Steven Rostedt (Google)" <rostedt@xxxxxxxxxxx> The tracefs_instance_tracers() was always returning the top level tracers and not the tracers that were available for the given instance. Fixes: 185019c0 ("libtracefs: Add tracefs_instance_tracers() API") Signed-off-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx> --- src/tracefs-events.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/tracefs-events.c b/src/tracefs-events.c index 83069aa..77d1ba8 100644 --- a/src/tracefs-events.c +++ b/src/tracefs-events.c @@ -1012,12 +1012,20 @@ char **tracefs_tracers(const char *tracing_dir) */ char **tracefs_instance_tracers(struct tracefs_instance *instance) { - const char *tracing_dir = NULL; + char *tracing_dir = NULL; + char **list; + int ret; - if (instance) - tracing_dir = instance->trace_dir; + if (instance) { + ret = asprintf(&tracing_dir, "%s/instances/%s", instance->trace_dir, + instance->name); + if (ret < 0) + return NULL; + } - return list_tracers(tracing_dir); + list = list_tracers(tracing_dir); + free(tracing_dir); + return list; } static int load_events(struct tep_handle *tep, -- 2.43.0