Re: [PATCH] tracing: Defer trigger private data frees past the grace period

Steven Rostedt <[email protected]>
Newsgroups org.kernel.vger.linux-trace-kernel,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Sun, 12 Jul 2026 17:10:06 +0100
David Carlier <[email protected]> wrote:

> diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
> index 82ce492ab268..bc696e4bd695 100644
> --- a/kernel/trace/trace_events_hist.c
> +++ b/kernel/trace/trace_events_hist.c
> @@ -6335,6 +6335,16 @@ static void unregister_field_var_hists(struct hist_trigger_data *hist_data)
>  	}
>  }
>  
> +static void hist_trigger_free_private(struct event_trigger_data *data)
> +{
> +	destroy_hist_data(data->private_data);
> +}
> +
> +static void hist_trigger_named_free_private(struct event_trigger_data *data)
> +{
> +	kfree(data->cmd_ops);
> +}
> +

This triggered lockdep:

[  785.093618] ------------[ cut here ]------------
[  785.097043] WARNING: kernel/trace/trace_events_hist.c:3597 at action_data_des
troy+0x74/0x80, CPU#3: trigger_data_fr/10557
[  785.104157] Modules linked in: [last unloaded: trace_printk]
[  785.108151] CPU: 3 UID: 0 PID: 10557 Comm: trigger_data_fr Tainted: G        
W           7.2.0-rc4-ftest-00009-g22f7a9d07cb0 #174 PREEMPT(lazy) 
[  785.116393] Tainted: [W]=WARN
[  785.118863] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.17.0-debian-1.17.0-1 04/01/2014
[  785.127417] RIP: 0010:action_data_destroy+0x74/0x80
[  785.130947] Code: 8b bd 30 03 00 00 e8 bb f2 1d 00 48 89 ef 5b 5d e9 b1 f2 1d 00 be ff ff ff ff 48 c7 c7 60 75 7f 83 e8 d0 4d e9 00 85 c0 75 a0 <0f> 0b eb 9c 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90
[  785.142648] RSP: 0018:ffffc90002803e78 EFLAGS: 00010246
[  785.146271] RAX: 0000000000000000 RBX: ffff88811837e800 RCX: 0000000000000000
[  785.150595] RDX: 0000000000000000 RSI: ffffffff82d24bb2 RDI: ffffffff82d5aacb
[  785.156356] RBP: ffff88812bc8d400 R08: 0000000000000001 R09: 0000000000000000
[  785.160229] R10: 0000000000000003 R11: ffff88811e290f60 R12: ffff88812bc8d400
[  785.164090] R13: ffff88811e290000 R14: ffffffff815f1630 R15: 0000000000000000
[  785.167949] FS:  0000000000000000(0000) GS:ffff8882f9727000(0000) knlGS:0000000000000000
[  785.172381] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  785.175483] CR2: 00007f02ef65341c CR3: 000000000366a001 CR4: 0000000000172ef0
[  785.179019] Call Trace:
[  785.180523]  <TASK>
[  785.181881]  destroy_hist_data+0x24f/0x260
[  785.185686]  trigger_kthread_fn+0x87/0xc0
[  785.187762]  ? __pfx_trigger_kthread_fn+0x10/0x10
[  785.190099]  kthread+0xf5/0x130
[  785.191807]  ? __pfx_kthread+0x10/0x10
[  785.193752]  ret_from_fork+0x336/0x470
[  785.195716]  ? __pfx_kthread+0x10/0x10
[  785.197654]  ret_from_fork_asm+0x1a/0x30
[  785.199694]  </TASK>
[  785.201037] irq event stamp: 3815
[  785.202762] hardirqs last  enabled at (3827): [<ffffffff814be4ee>] __up_console_sem+0x5e/0x70
[  785.206442] hardirqs last disabled at (3838): [<ffffffff814be4d3>] __up_console_sem+0x43/0x70
[  785.209954] softirqs last  enabled at (3476): [<ffffffff8141115d>] handle_softirqs+0x35d/0x430
[  785.213524] softirqs last disabled at (3471): [<ffffffff81411346>] __irq_exit_rcu+0x106/0x1a0
[  785.218790] ---[ end trace 0000000000000000 ]---


Can you fold this into your patch:

diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
index bc696e4bd695..1f438de90d09 100644
--- a/kernel/trace/trace_events_hist.c
+++ b/kernel/trace/trace_events_hist.c
@@ -6337,6 +6337,7 @@ static void unregister_field_var_hists(struct hist_trigger_data *hist_data)
 
 static void hist_trigger_free_private(struct event_trigger_data *data)
 {
+	guard(mutex)(&event_mutex);
 	destroy_hist_data(data->private_data);
 }
 


-- Steve
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.