[PATCH v3] tracing: Keep copying markers when one instance is stopped

From: Jaewon Jung

Date: Wed Nov 04 2026 - 21:18:40 EST


When several instances enable copy_trace_marker, stopping one instance
can prevent the remaining buffers from receiving markers.

Continue copying text and raw markers even if one copy fails. Return the
largest successful write length, or -ENODEV if no write succeeds.

Fixes: 7b382efd5e8a ("tracing: Allow the top level trace_marker to write into another instances")
Signed-off-by: Jaewon Jung <jaewon8868@xxxxxxxxx>
---
Changes in v3:
- Return the largest successful write length, as suggested by Steven.

Tested on x86_64 QEMU:
- Before: A failed copy prevents writes to later live buffers.
- After: All buffers are tried, and the largest successful write length
is returned. If no write succeeds, ENODEV is returned.
- Existing text/raw marker and instance selftests: 6 PASS.

kernel/trace/trace.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 08614af8fad1..164da1ea5e73 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -6329,9 +6329,10 @@ tracing_mark_write(struct file *filp, const char __user *ubuf,
if (tr == &global_trace) {
guard(rcu)();
list_for_each_entry_rcu(tr, &marker_copies, marker_list) {
- written = write_marker_to_buffer(tr, buf, cnt, ip);
- if (written < 0)
- break;
+ ssize_t w = write_marker_to_buffer(tr, buf, cnt, ip);
+
+ if (w >= 0 && w > written)
+ written = w;
}
} else {
written = write_marker_to_buffer(tr, buf, cnt, ip);
@@ -6408,9 +6409,10 @@ tracing_mark_raw_write(struct file *filp, const char __user *ubuf,
if (tr == &global_trace) {
guard(rcu)();
list_for_each_entry_rcu(tr, &marker_copies, marker_list) {
- written = write_raw_marker_to_buffer(tr, buf, cnt);
- if (written < 0)
- break;
+ ssize_t w = write_raw_marker_to_buffer(tr, buf, cnt);
+
+ if (w >= 0 && w > written)
+ written = w;
}
} else {
written = write_raw_marker_to_buffer(tr, buf, cnt);

base-commit: d7ff48d92a0f28bc0612da47c054efbc28c19562
--
2.43.0