Merge mulgrave-w:git/scsi-misc-2.6
[pandora-kernel.git] / kernel / rcupdate.c
index 759805c..523e464 100644 (file)
@@ -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
@@ -548,7 +552,7 @@ static void __devinit rcu_online_cpu(int cpu)
        tasklet_init(&per_cpu(rcu_tasklet, cpu), rcu_process_callbacks, 0UL);
 }
 
-static int __devinit rcu_cpu_notify(struct notifier_block *self,
+static int __cpuinit rcu_cpu_notify(struct notifier_block *self,
                                unsigned long action, void *hcpu)
 {
        long cpu = (long)hcpu;
@@ -565,7 +569,7 @@ static int __devinit rcu_cpu_notify(struct notifier_block *self,
        return NOTIFY_OK;
 }
 
-static struct notifier_block __devinitdata rcu_nb = {
+static struct notifier_block __cpuinitdata rcu_nb = {
        .notifier_call  = rcu_cpu_notify,
 };