File tree Expand file tree Collapse file tree 1 file changed +7
-4
lines changed Expand file tree Collapse file tree 1 file changed +7
-4
lines changed Original file line number Diff line number Diff line change @@ -106,13 +106,16 @@ static void rcu_free_old_probes(struct rcu_head *head)
106
106
kfree (container_of (head , struct tp_probes , rcu ));
107
107
}
108
108
109
- static inline void release_probes (struct tracepoint_func * old )
109
+ static inline void release_probes (struct tracepoint * tp , struct tracepoint_func * old )
110
110
{
111
111
if (old ) {
112
112
struct tp_probes * tp_probes = container_of (old ,
113
113
struct tp_probes , probes [0 ]);
114
114
115
- call_rcu (& tp_probes -> rcu , rcu_free_old_probes );
115
+ if (tracepoint_is_faultable (tp ))
116
+ call_rcu_tasks_trace (& tp_probes -> rcu , rcu_free_old_probes );
117
+ else
118
+ call_rcu (& tp_probes -> rcu , rcu_free_old_probes );
116
119
}
117
120
}
118
121
@@ -334,7 +337,7 @@ static int tracepoint_add_func(struct tracepoint *tp,
334
337
break ;
335
338
}
336
339
337
- release_probes (old );
340
+ release_probes (tp , old );
338
341
return 0 ;
339
342
}
340
343
@@ -405,7 +408,7 @@ static int tracepoint_remove_func(struct tracepoint *tp,
405
408
WARN_ON_ONCE (1 );
406
409
break ;
407
410
}
408
- release_probes (old );
411
+ release_probes (tp , old );
409
412
return 0 ;
410
413
}
411
414
You can’t perform that action at this time.
0 commit comments