X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=mm%2Fpercpu.c;h=083e7c91e5f62b10ec0b85eaa2f307a1bb2921df;hb=f2483415293b180945da707e7dbe74e5daa72651;hp=008fbd9e6fa4c30bf5c234741b6151d0fdc75d3f;hpb=3b034b0d084221596bf35c8d893e1d4d5477b9cc;p=safe%2Fjmp%2Flinux-2.6 diff --git a/mm/percpu.c b/mm/percpu.c index 008fbd9..083e7c9 100644 --- a/mm/percpu.c +++ b/mm/percpu.c @@ -46,8 +46,6 @@ * * To use this allocator, arch code should do the followings. * - * - drop CONFIG_HAVE_LEGACY_PER_CPU_AREA - * * - define __addr_to_pcpu_ptr() and __pcpu_ptr_to_addr() to translate * regular address to percpu pointer and back if they need to be * different from the default @@ -1273,7 +1271,7 @@ static void pcpu_reclaim(struct work_struct *work) */ void free_percpu(void *ptr) { - void *addr = __pcpu_ptr_to_addr(ptr); + void *addr; struct pcpu_chunk *chunk; unsigned long flags; int off; @@ -1281,6 +1279,8 @@ void free_percpu(void *ptr) if (!ptr) return; + addr = __pcpu_ptr_to_addr(ptr); + spin_lock_irqsave(&pcpu_lock, flags); chunk = pcpu_chunk_addr_search(addr);