X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fpercpu_counter.c;h=393a0e915c23b252b747c62645beb463e25843ed;hb=e9f20d6f03e8df393b001dab6dc5226c2a5daf57;hp=9659eabffc319c5235669a87687949d270536b4e;hpb=c548f08a4f7b89b93c805e0c4024b8302afa7121;p=linux-2.6 diff --git a/lib/percpu_counter.c b/lib/percpu_counter.c index 9659eabffc..393a0e915c 100644 --- a/lib/percpu_counter.c +++ b/lib/percpu_counter.c @@ -124,12 +124,13 @@ static int __cpuinit percpu_counter_hotcpu_callback(struct notifier_block *nb, mutex_lock(&percpu_counters_lock); list_for_each_entry(fbc, &percpu_counters, list) { s32 *pcount; + unsigned long flags; - spin_lock(&fbc->lock); + spin_lock_irqsave(&fbc->lock, flags); pcount = per_cpu_ptr(fbc->counters, cpu); fbc->count += *pcount; *pcount = 0; - spin_unlock(&fbc->lock); + spin_unlock_irqrestore(&fbc->lock, flags); } mutex_unlock(&percpu_counters_lock); return NOTIFY_OK;