Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6fb1fc1 authored by Artem Savkov's avatar Artem Savkov Committed by Paul E. McKenney
Browse files

rcuperf: Do not wake up shutdown wait queue if "shutdown" is false.



After finishing its tests rcuperf tries to wake up shutdown_wq even if
"shutdown" param is set to false, resulting in a wake_up() call on an
unitialized wait_queue_head_t which leads to "BUG: spinlock bad magic" and
"BUG: unable to handle kernel NULL pointer dereference".

Fix by checking "shutdown" param before waking up the queue.

Signed-off-by: default avatarArtem Savkov <artem.savkov@gmail.com>
parent dba6f1ba
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -423,10 +423,12 @@ rcu_perf_writer(void *arg)
					b_rcu_perf_writer_finished =
					b_rcu_perf_writer_finished =
						cur_ops->completed();
						cur_ops->completed();
				}
				}
				if (shutdown) {
					smp_mb(); /* Assign before wake. */
					smp_mb(); /* Assign before wake. */
					wake_up(&shutdown_wq);
					wake_up(&shutdown_wq);
				}
				}
			}
			}
		}
		if (done && !alldone &&
		if (done && !alldone &&
		    atomic_read(&n_rcu_perf_writer_finished) >= nrealwriters)
		    atomic_read(&n_rcu_perf_writer_finished) >= nrealwriters)
			alldone = true;
			alldone = true;