From 6c2467d66131aa2cb5a050e057590875720977ce Mon Sep 17 00:00:00 2001 From: Oleg Nesterov Date: Tue, 12 Sep 2006 20:35:55 -0700 Subject: [PATCH] --- yaml --- r: 33901 b: refs/heads/master c: dd9daa221e77f642954849a795fa7c59533a9b2f h: refs/heads/master i: 33899: eee2c9197a1138a35cbb7b18be18a3bb44426074 v: v3 --- [refs] | 2 +- trunk/kernel/rcupdate.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index e861554547f1..79086b8e630d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7fbb36451a91de6e8f9ece4f1f1ee9bd8ebf838a +refs/heads/master: dd9daa221e77f642954849a795fa7c59533a9b2f diff --git a/trunk/kernel/rcupdate.c b/trunk/kernel/rcupdate.c index 436ab35f6fa7..523e46483b99 100644 --- a/trunk/kernel/rcupdate.c +++ b/trunk/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