X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=kernel%2Frcupdate.c;h=523e46483b99e6b3bbee6376c7a4232dc71adca4;hb=a44ca24424814d081363e8750e3b4ecec9537523;hp=436ab35f6fa74821b7f40d1625cce47ccf674121;hpb=53c7d2b7706526bf262ac10eb52d602d1520458a;p=linux-2.6-omap-h63xx.git diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c index 436ab35f6fa..523e46483b9 100644 --- a/kernel/rcupdate.c +++ b/kernel/rcupdate.c @@ -241,12 +241,16 @@ static void rcu_do_batch(struct rcu_data *rdp) next = rdp->donelist = list->next; list->func(list); list = next; - rdp->qlen--; if (++count >= rdp->blimit) break; } + + local_irq_disable(); + rdp->qlen -= count; + local_irq_enable(); if (rdp->blimit == INT_MAX && rdp->qlen <= qlowmark) rdp->blimit = blimit; + if (!rdp->donelist) rdp->donetail = &rdp->donelist; else