aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/torture.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/kernel/torture.c b/kernel/torture.c
index e5af6be2594d..bc0ee382b3c8 100644
--- a/kernel/torture.c
+++ b/kernel/torture.c
@@ -533,7 +533,11 @@ void stutter_wait(const char *title)
533 while (ACCESS_ONCE(stutter_pause_test) || 533 while (ACCESS_ONCE(stutter_pause_test) ||
534 (torture_runnable && !ACCESS_ONCE(*torture_runnable))) { 534 (torture_runnable && !ACCESS_ONCE(*torture_runnable))) {
535 if (stutter_pause_test) 535 if (stutter_pause_test)
536 schedule_timeout_interruptible(1); 536 if (ACCESS_ONCE(stutter_pause_test) == 1)
537 schedule_timeout_interruptible(1);
538 else
539 while (ACCESS_ONCE(stutter_pause_test))
540 cond_resched();
537 else 541 else
538 schedule_timeout_interruptible(round_jiffies_relative(HZ)); 542 schedule_timeout_interruptible(round_jiffies_relative(HZ));
539 torture_shutdown_absorb(title); 543 torture_shutdown_absorb(title);
@@ -550,7 +554,11 @@ static int torture_stutter(void *arg)
550 VERBOSE_TOROUT_STRING("torture_stutter task started"); 554 VERBOSE_TOROUT_STRING("torture_stutter task started");
551 do { 555 do {
552 if (!torture_must_stop()) { 556 if (!torture_must_stop()) {
553 schedule_timeout_interruptible(stutter); 557 if (stutter > 1) {
558 schedule_timeout_interruptible(stutter - 1);
559 ACCESS_ONCE(stutter_pause_test) = 2;
560 }
561 schedule_timeout_interruptible(1);
554 ACCESS_ONCE(stutter_pause_test) = 1; 562 ACCESS_ONCE(stutter_pause_test) = 1;
555 } 563 }
556 if (!torture_must_stop()) 564 if (!torture_must_stop())