mirror of https://gitee.com/openkylin/linux.git
tracing: Fix free of probe entry by calling call_rcu_sched()
Because function tracing is very invasive, and can even trace calls to rcu_read_lock(), RCU access in function tracing is done with preempt_disable_notrace(). This requires a synchronize_sched() for updates and not a synchronize_rcu(). Function probes (traceon, traceoff, etc) must be freed after a synchronize_sched() after its entry has been removed from the hash. But call_rcu() is used. Fix this by using call_rcu_sched(). Also fix the usage to use hlist_del_rcu() instead of hlist_del(). Cc: stable@vger.kernel.org Cc: Paul McKenney <paulmck@linux.vnet.ibm.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
2721e72dd1
commit
740466bc89
|
@ -3108,8 +3108,8 @@ __unregister_ftrace_function_probe(char *glob, struct ftrace_probe_ops *ops,
|
|||
continue;
|
||||
}
|
||||
|
||||
hlist_del(&entry->node);
|
||||
call_rcu(&entry->rcu, ftrace_free_entry_rcu);
|
||||
hlist_del_rcu(&entry->node);
|
||||
call_rcu_sched(&entry->rcu, ftrace_free_entry_rcu);
|
||||
}
|
||||
}
|
||||
__disable_ftrace_function_probe();
|
||||
|
|
Loading…
Reference in New Issue