summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2018-07-19 10:57:58 -0700
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2018-08-29 09:20:48 -0700
commit152f4afbfd58f8ada7591113129aa6ba7fe114c5 (patch)
tree97a9207b7b0494dc44ccf50fa2e8794331bb15d6
parent119248bec9d318ae41da8ab8f400f07e7a610cc3 (diff)
rcutorture: Avoid no-test complaint if too few forward-progress tries
In a too-short test, random delays can cause each attempt to do forward-progress testing to fail to complete, thus resulting in spurious splats. This commit therefore requires at least five tries before complaining about rcutorture runs that failed to produce at least one valid forward-progress testing attempt. Note that actual forward-progress failures will splat regardless of the number of tries. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
-rw-r--r--kernel/rcu/rcutorture.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index dee7b45b2186..8ab23143c244 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -1678,6 +1678,7 @@ static int rcu_torture_fwd_prog(void *args)
int idx;
unsigned long stopat;
bool tested = false;
+ int tested_tries = 0;
VERBOSE_TOROUT_STRING("rcu_torture_fwd_progress task started");
do {
@@ -1692,6 +1693,7 @@ static int rcu_torture_fwd_prog(void *args)
if (!fwd_progress_need_resched || need_resched())
cond_resched();
}
+ tested_tries++;
if (!time_before(jiffies, stopat) && !torture_must_stop()) {
tested = true;
cver = cver == READ_ONCE(rcu_torture_current_version);
@@ -1701,7 +1703,8 @@ static int rcu_torture_fwd_prog(void *args)
/* Avoid slow periods, better to test when busy. */
stutter_wait("rcu_torture_fwd_prog");
} while (!torture_must_stop());
- WARN_ON(!tested);
+ /* Short runs might not contain a valid forward-progress attempt. */
+ WARN_ON(!tested && tested_tries >= 5);
torture_kthread_stopping("rcu_torture_fwd_prog");
return 0;
}