Otherwise, the call_rcu thread might end up in a synchronize_rcu that
never ends.

Signed-off-by: Paolo Bonzini <[email protected]>
---
 tests/rcutorture.h |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/tests/rcutorture.h b/tests/rcutorture.h
index 5ba3d2b..4c6f9da 100644
--- a/tests/rcutorture.h
+++ b/tests/rcutorture.h
@@ -127,9 +127,10 @@ void *rcu_read_perf_test(void *arg)
        rcu_register_thread();
        run_on(me);
        uatomic_inc(&nthreadsrunning);
+       put_thread_offline();
        while (goflag == GOFLAG_INIT)
                poll(NULL, 0, 1);
-       mark_rcu_quiescent_state();
+       put_thread_online();
        while (goflag == GOFLAG_RUN) {
                for (i = 0; i < RCU_READ_RUN; i++) {
                        rcu_read_lock();
@@ -286,9 +287,10 @@ void *rcu_read_stress_test(void *arg)
        int pc;
 
        rcu_register_thread();
+       put_thread_offline();
        while (goflag == GOFLAG_INIT)
                poll(NULL, 0, 1);
-       mark_rcu_quiescent_state();
+       put_thread_online();
        while (goflag == GOFLAG_RUN) {
                rcu_read_lock();
                p = rcu_dereference(rcu_stress_current);
-- 
1.7.6


_______________________________________________
ltt-dev mailing list
[email protected]
http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev

Reply via email to