From ab91a3e6f75ec8be068289e46d1d61846d0df99d Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Wed, 2 Apr 2008 13:04:51 -0700 Subject: [PATCH] --- yaml --- r: 88101 b: refs/heads/master c: 6496968e6cc3f01faafa63a5a28549a708539ac0 h: refs/heads/master i: 88099: b44bb54fb75852d01b3dc50043bc7519905418b2 v: v3 --- [refs] | 2 +- trunk/kernel/marker.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 220a85063b0d..57faed2c482c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 629c8b4cdb354518308663aff2f719e02f69ffbe +refs/heads/master: 6496968e6cc3f01faafa63a5a28549a708539ac0 diff --git a/trunk/kernel/marker.c b/trunk/kernel/marker.c index 041c33e3e95c..005b95954593 100644 --- a/trunk/kernel/marker.c +++ b/trunk/kernel/marker.c @@ -671,6 +671,9 @@ int marker_probe_register(const char *name, const char *format, entry->rcu_pending = 1; /* write rcu_pending before calling the RCU callback */ smp_wmb(); +#ifdef CONFIG_PREEMPT_RCU + synchronize_sched(); /* Until we have the call_rcu_sched() */ +#endif call_rcu(&entry->rcu, free_old_closure); end: mutex_unlock(&markers_mutex); @@ -714,6 +717,9 @@ int marker_probe_unregister(const char *name, entry->rcu_pending = 1; /* write rcu_pending before calling the RCU callback */ smp_wmb(); +#ifdef CONFIG_PREEMPT_RCU + synchronize_sched(); /* Until we have the call_rcu_sched() */ +#endif call_rcu(&entry->rcu, free_old_closure); remove_marker(name); /* Ignore busy error message */ ret = 0; @@ -792,6 +798,9 @@ int marker_probe_unregister_private_data(marker_probe_func *probe, entry->rcu_pending = 1; /* write rcu_pending before calling the RCU callback */ smp_wmb(); +#ifdef CONFIG_PREEMPT_RCU + synchronize_sched(); /* Until we have the call_rcu_sched() */ +#endif call_rcu(&entry->rcu, free_old_closure); remove_marker(entry->name); /* Ignore busy error message */ end: