* [PATCH v2 1/2] tracing: Do not clean up hiter in mmiotrace read function
2026-09-10 20:24 [PATCH v2 0/2] tracing: Do not clean up hiter in mmiotrace read function Steven Rostedt
@ 2026-09-10 20:24 ` Steven Rostedt
2026-09-10 20:24 ` [PATCH v2 2/2] tracing: Invert the logic in mmio_read() to get rid of the goto Steven Rostedt
1 sibling, 0 replies; 3+ messages in thread
From: Steven Rostedt @ 2026-09-10 20:24 UTC (permalink / raw)
To: linux-kernel, linux-trace-kernel
Cc: Masami Hiramatsu, Mark Rutland, Mathieu Desnoyers, Andrew Morton
From: Steven Rostedt <rostedt@goodmis.org>
When the mmiotrace trace was first created, it allocated a descriptor in
its pipe_open() method. Since there was no pipe_close() method when it was
created (in May of 2008, and pipe_close() was added in December of 2009),
it cleaned up the allocated descriptors in the read.
Now that the clean up is in the pipe_close() method that now exists,
remove the clean up from the read as it is no longer needed.
Link: https://lore.kernel.org/all/20260715143604.14481-1-gaikwad.dcg@gmail.com/
Link: https://lore.kernel.org/all/20260721211143.36dbd559@gandalf.local.home/
Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
Changses since v1 : https://patch.msgid.link/20260721212010.76e9ed61@gandalf.local.home
- Broke it up into two patches
kernel/trace/trace_mmiotrace.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/kernel/trace/trace_mmiotrace.c b/kernel/trace/trace_mmiotrace.c
index 77120d467e11..0034d6af3d9d 100644
--- a/kernel/trace/trace_mmiotrace.c
+++ b/kernel/trace/trace_mmiotrace.c
@@ -152,11 +152,6 @@ static ssize_t mmio_read(struct trace_iterator *iter, struct file *filp,
mmio_print_pcidev(s, hiter->dev);
hiter->dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, hiter->dev);
- if (!hiter->dev) {
- destroy_header_iter(hiter);
- iter->private = NULL;
- }
-
print_out:
ret = trace_seq_to_user(s, ubuf, cnt);
return (ret == -EBUSY) ? 0 : ret;
--
2.53.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* [PATCH v2 2/2] tracing: Invert the logic in mmio_read() to get rid of the goto
2026-09-10 20:24 [PATCH v2 0/2] tracing: Do not clean up hiter in mmiotrace read function Steven Rostedt
2026-09-10 20:24 ` [PATCH v2 1/2] " Steven Rostedt
@ 2026-09-10 20:24 ` Steven Rostedt
1 sibling, 0 replies; 3+ messages in thread
From: Steven Rostedt @ 2026-09-10 20:24 UTC (permalink / raw)
To: linux-kernel, linux-trace-kernel
Cc: Masami Hiramatsu, Mark Rutland, Mathieu Desnoyers, Andrew Morton
From: Steven Rostedt <rostedt@goodmis.org>
Simplify the logic by removing the goto in the first condition and
inverting the logic of the early return.
This changes the reading logic slightly. Before, the goto would exit the
function right away with the output of missed events. The next read would
then update print the saved hiter->dev and update it.
Now, in one iteration, if count_overruns() retruns !0, the lost events is
printed as well as the next hiter->dev without needing a second loop.
Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
Changes since v1: https://patch.msgid.link/20260721212010.76e9ed61@gandalf.local.home
- Broke it up into two patches
kernel/trace/trace_mmiotrace.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/kernel/trace/trace_mmiotrace.c b/kernel/trace/trace_mmiotrace.c
index 0034d6af3d9d..c49738cdb439 100644
--- a/kernel/trace/trace_mmiotrace.c
+++ b/kernel/trace/trace_mmiotrace.c
@@ -143,16 +143,13 @@ static ssize_t mmio_read(struct trace_iterator *iter, struct file *filp,
if (!overrun_detected)
pr_warn("mmiotrace has lost events\n");
overrun_detected = true;
- goto print_out;
}
- if (!hiter || !hiter->dev)
- return 0;
-
- mmio_print_pcidev(s, hiter->dev);
- hiter->dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, hiter->dev);
+ if (hiter && hiter->dev) {
+ mmio_print_pcidev(s, hiter->dev);
+ hiter->dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, hiter->dev);
+ }
-print_out:
ret = trace_seq_to_user(s, ubuf, cnt);
return (ret == -EBUSY) ? 0 : ret;
}
--
2.53.0
^ permalink raw reply related [flat|nested] 3+ messages in thread