Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9a1e9693 authored by Mathieu Desnoyers's avatar Mathieu Desnoyers Committed by Ingo Molnar
Browse files

tracepoints: fix reentrancy



The tracepoints had the same problem markers did have wrt reentrancy. Apply a
similar fix using a rcu_barrier after each tracepoint mutex lock.

Signed-off-by: default avatarMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent ca2db6cf
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -356,6 +356,8 @@ int tracepoint_probe_register(const char *name, void *probe)
	mutex_lock(&tracepoints_mutex);
	entry = get_tracepoint(name);
	WARN_ON(!entry);
	if (entry->rcu_pending)
		rcu_barrier_sched();
	tracepoint_entry_free_old(entry, old);
end:
	mutex_unlock(&tracepoints_mutex);
@@ -392,6 +394,8 @@ int tracepoint_probe_unregister(const char *name, void *probe)
	entry = get_tracepoint(name);
	if (!entry)
		goto end;
	if (entry->rcu_pending)
		rcu_barrier_sched();
	tracepoint_entry_free_old(entry, old);
	remove_tracepoint(name);	/* Ignore busy error message */
	ret = 0;