Commit 9a1e9693f534174945154197fec4ec92f168ce21

Authored by Mathieu Desnoyers
Committed by Ingo Molnar
1 parent ca2db6cf30

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: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

Showing 1 changed file with 4 additions and 0 deletions Side-by-side Diff

... ... @@ -356,6 +356,8 @@
356 356 mutex_lock(&tracepoints_mutex);
357 357 entry = get_tracepoint(name);
358 358 WARN_ON(!entry);
  359 + if (entry->rcu_pending)
  360 + rcu_barrier_sched();
359 361 tracepoint_entry_free_old(entry, old);
360 362 end:
361 363 mutex_unlock(&tracepoints_mutex);
... ... @@ -392,6 +394,8 @@
392 394 entry = get_tracepoint(name);
393 395 if (!entry)
394 396 goto end;
  397 + if (entry->rcu_pending)
  398 + rcu_barrier_sched();
395 399 tracepoint_entry_free_old(entry, old);
396 400 remove_tracepoint(name); /* Ignore busy error message */
397 401 ret = 0;