Messages in this thread | | | Date | Sun, 7 Feb 2016 11:43:02 -0800 | From | "Paul E. McKenney" <> | Subject | Re: [PATCH] rcuperf: Do not wake up shutdown wait queue if "shutdown" is false. |
| |
On Sun, Feb 07, 2016 at 01:31:39PM +0100, Artem Savkov wrote: > After finishing it's 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: Artem Savkov <artem.savkov@gmail.com>
Good catch! Queued for testing and review.
Thanx, Paul
> --- > kernel/rcu/rcuperf.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c > index 09ffa36..fb45a26 100644 > --- a/kernel/rcu/rcuperf.c > +++ b/kernel/rcu/rcuperf.c > @@ -414,8 +414,10 @@ rcu_perf_writer(void *arg) > b_rcu_perf_writer_finished = > cur_ops->completed(); > } > - smp_mb(); /* Assign before wake. */ > - wake_up(&shutdown_wq); > + if (shutdown) { > + smp_mb(); /* Assign before wake. */ > + wake_up(&shutdown_wq); > + } > } > } > if (done && !alldone && > -- > 2.7.0 >
| |