Mon, Jul 22, 2019 at 08:31:30PM CEST, ido...@idosch.org wrote: >From: Ido Schimmel <ido...@mellanox.com> > >The timer and work item are currently initialized once during module >init, but subsequent patches will need to associate different functions >with the work item, based on the configured alert mode. > >Allow subsequent patches to make that change by initializing and >de-initializing these objects during tracing enable and disable. > >This also guarantees that once the request to disable tracing returns, >no more netlink notifications will be generated. > >Signed-off-by: Ido Schimmel <ido...@mellanox.com> >--- > net/core/drop_monitor.c | 24 +++++++++++++++++++----- > 1 file changed, 19 insertions(+), 5 deletions(-) > >diff --git a/net/core/drop_monitor.c b/net/core/drop_monitor.c >index e68dafaaebcd..2f56a61c43c6 100644 >--- a/net/core/drop_monitor.c >+++ b/net/core/drop_monitor.c >@@ -257,13 +257,20 @@ static void trace_napi_poll_hit(void *ignore, struct >napi_struct *napi, > > static int net_dm_trace_on_set(struct netlink_ext_ack *extack) > { >- int rc; >+ int cpu, rc; > > if (!try_module_get(THIS_MODULE)) { > NL_SET_ERR_MSG_MOD(extack, "Failed to take reference on > module"); > return -ENODEV; > } > >+ for_each_possible_cpu(cpu) { >+ struct per_cpu_dm_data *data = &per_cpu(dm_cpu_data, cpu); >+ >+ INIT_WORK(&data->dm_alert_work, send_dm_alert); >+ timer_setup(&data->send_timer, sched_send_work, 0);
So don't you want to remove this initialization from init_net_drop_monitor? >+ } >+ > rc = register_trace_kfree_skb(trace_kfree_skb_hit, NULL); > if (rc) { > NL_SET_ERR_MSG_MOD(extack, "Failed to connect probe to > kfree_skb() tracepoint"); [...]