X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=kernel%2Frcupdate.c;h=13458bbaa1be2bbac965b9584709152c9291cc46;hb=b3967dc566bc89df19e9aeb87b2fd483418b02e6;hp=6df1559b1c02bf33990ddd99294e0dbdc924ab5b;hpb=a05ba4561fa3ad8b64a27577d0d38c190f60f762;p=linux-2.6 diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c index 6df1559b1c..13458bbaa1 100644 --- a/kernel/rcupdate.c +++ b/kernel/rcupdate.c @@ -416,8 +416,8 @@ static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp, rdp->curtail = &rdp->curlist; } - local_irq_disable(); if (rdp->nxtlist && !rdp->curlist) { + local_irq_disable(); rdp->curlist = rdp->nxtlist; rdp->curtail = rdp->nxttail; rdp->nxtlist = NULL; @@ -442,9 +442,8 @@ static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp, rcu_start_batch(rcp); spin_unlock(&rcp->lock); } - } else { - local_irq_enable(); } + rcu_check_quiescent_state(rcp, rdp); if (rdp->donelist) rcu_do_batch(rdp);