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

Commit ae778869 authored by Paul E. McKenney's avatar Paul E. McKenney Committed by Ingo Molnar
Browse files

rcupreempt: fix hibernate/resume in presence of PREEMPT_RCU and hotplug



This fixes a oops encountered when doing hibernate/resume in presence of
PREEMPT_RCU.

The problem was that the code failed to disable preemption when
accessing a per-CPU variable.  This is OK when called from code that
already has preemption disabled, but such is not the case from the
suspend/resume code path.

Reported-by: default avatarDave Young <hidave.darkstar@gmail.com>
Tested-by: default avatarDave Young <hidave.darkstar@gmail.com>
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 076d84bb
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -918,8 +918,9 @@ void rcu_offline_cpu(int cpu)
	 * fix.
	 */

	local_irq_save(flags);
	rdp = RCU_DATA_ME();
	spin_lock_irqsave(&rdp->lock, flags);
	spin_lock(&rdp->lock);
	*rdp->nexttail = list;
	if (list)
		rdp->nexttail = tail;