Skip to contentSkip to conversation

tracing: Propagate errors from remote event bulk updates

PATCH In review Jackie Liu 2 participants 2 messages Jul 15 Tracing

lore
Share & tools
lore

Jackie Liu

author
#0 lore raw

PATCH v2 1/1 tracing: Propagate errors from remote event bulk updates

From: Jackie Liu <[email protected]>

remote_events_dir_enable_write() ignores the return value from trace_remote_enable_event(). If a remote rejects an event state change, the write therefore reports success even though the affected event remains in its previous state.

Keep trying all events, but retain and return the first error. This matches __ftrace_set_clr_event_nolock(), which permits partial updates while notifying userspace when an operation fails.

Fixes 775cb093bc50 ("tracing: Add events/ root files to trace remotes")
Assisted-by Codex:gpt-5.6-sol

---
Changes in v2:
- Move the eret declaration after evt to follow reverse Christmas tree ordering.

 kernel/trace/trace_remote.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)
kernel/trace/trace_remote.c +12 -1
index 0f6ef5c36d84..daeaf1d3eb1c 100644
@@ -1150,10 +1150,21 @@ static ssize_t remote_events_dir_enable_write(struct file *filp, const char __us
 
 	for (i = 0; i < remote->nr_events; i++) {
 		struct remote_event *evt = &remote->events[i];
+		int eret;
 
-		trace_remote_enable_event(remote, evt, enable);
+		eret = trace_remote_enable_event(remote, evt, enable);
+		/*
+		 * Save the first error and return that. Some events
+		 * may still have been enabled, but let the user
+		 * know that something went wrong.
+		 */
+		if (!ret && eret)
+			ret = eret;
 	}
 
+	if (ret)
+		return ret;
+
 	return count;
 }
 
Signature · 1 line
2.54.0
Reviewed-by on v2 1/1
#1 lore raw
Quoted 7 lines · Jackie Liu

From: Jackie Liu <[email protected]>

remote_events_dir_enable_write() ignores the return value from trace_remote_enable_event(). If a remote rejects an event state change, the write therefore reports success even though the affected event remains in its previous state.

Quoted 7 lines

Keep trying all events, but retain and return the first error. This matches __ftrace_set_clr_event_nolock(), which permits partial updates while notifying userspace when an operation fails.

Fixes 775cb093bc50 ("tracing: Add events/ root files to trace remotes")
Assisted-by Codex:gpt-5.6-sol

Thanks!

Quoted 38 lines

---
Changes in v2:
- Move the eret declaration after evt to follow reverse Christmas tree ordering.

 kernel/trace/trace_remote.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)
kernel/trace/trace_remote.c +12 -1
index 0f6ef5c36d84..daeaf1d3eb1c 100644
@@ -1150,10 +1150,21 @@ static ssize_t remote_events_dir_enable_write(struct file *filp, const char __us
 
 	for (i = 0; i < remote->nr_events; i++) {
 		struct remote_event *evt = &remote->events[i];
+		int eret;
 
-		trace_remote_enable_event(remote, evt, enable);
+		eret = trace_remote_enable_event(remote, evt, enable);
+		/*
+		 * Save the first error and return that. Some events
+		 * may still have been enabled, but let the user
+		 * know that something went wrong.
+		 */
+		if (!ret && eret)
+			ret = eret;
 	}
 
+	if (ret)
+		return ret;
+
 	return count;
 }
 
Signature · 1 line
2.54.0