[PATCH] libtracefs: Fix tracefs_event_is_enabled() for all events
Steven Rostedt <[email protected]> Mon, 11 Aug 2025 17:55:52 -0400
| Newsgroups | org.kernel.vger.linux-trace-devel |
|---|---|
| Message-ID | <[email protected]> |
From: "Steven Rostedt (Google)" <[email protected]> When tracefs_event_is_ensabled() is called with both system and event as NULL in order to get the state of all events, it tries to disable all events. This is becaues the call to enable_disable_all() doesn't take the state as a parameter and just looks at the "enable" flag. Fixes: fc94d1a8 ("libtracefs: Add tracefs_event_enable/disable() API") Signed-off-by: Steven Rostedt (Google) <[email protected]> --- src/tracefs-events.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/tracefs-events.c b/src/tracefs-events.c index 1576153..aabec02 100644 --- a/src/tracefs-events.c +++ b/src/tracefs-events.c @@ -1511,12 +1511,23 @@ static int enable_disable_system(struct tracefs_instance *instance, } static int enable_disable_all(struct tracefs_instance *instance, - bool enable) + bool enable, enum event_state *state) { const char *str = enable ? "1" : "0"; + char *event_file; int ret; - ret = tracefs_instance_file_write(instance, "events/enable", str); + ret = asprintf(&event_file, "events/enable"); + if (ret < 0) + return ret; + + if (state) + ret = read_event_state(instance, event_file, state); + else + + ret = tracefs_instance_file_write(instance, event_file, str); + free(event_file); + return ret < 0 ? ret : 0; } @@ -1552,7 +1563,7 @@ static int event_enable_disable(struct tracefs_instance *instance, /* Handle all events first */ if (!system && !event) - return enable_disable_all(instance, enable); + return enable_disable_all(instance, enable, state); systems = tracefs_event_systems(NULL); if (!systems) -- 2.47.2