diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-09-07 14:08:37 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-09-07 14:08:37 -0700 |
commit | ce7db282a3830f57f5b05ec48288c23a5c4d66d5 (patch) | |
tree | 8e191c4b2ffa1658d5c014da5cc6230fc58c1a59 /mm | |
parent | cd4d4fc4137502f88ee871fc015a934dc28535e3 (diff) | |
parent | 54157c44471f5e266508ac08d270f2bc5857e8bb (diff) | |
download | linux-stable-ce7db282a3830f57f5b05ec48288c23a5c4d66d5.tar.gz linux-stable-ce7db282a3830f57f5b05ec48288c23a5c4d66d5.tar.bz2 linux-stable-ce7db282a3830f57f5b05ec48288c23a5c4d66d5.zip |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:
percpu: fix a mismatch between code and comment
percpu: fix a memory leak in pcpu_extend_area_map()
percpu: add __percpu notations to UP allocator
percpu: handle __percpu notations in UP accessors
Diffstat (limited to 'mm')
-rw-r--r-- | mm/percpu.c | 6 | ||||
-rw-r--r-- | mm/percpu_up.c | 4 |
2 files changed, 6 insertions, 4 deletions
diff --git a/mm/percpu.c b/mm/percpu.c index e61dc2cc5873..58c572b18b07 100644 --- a/mm/percpu.c +++ b/mm/percpu.c @@ -393,7 +393,9 @@ static int pcpu_extend_area_map(struct pcpu_chunk *chunk, int new_alloc) goto out_unlock; old_size = chunk->map_alloc * sizeof(chunk->map[0]); - memcpy(new, chunk->map, old_size); + old = chunk->map; + + memcpy(new, old, old_size); chunk->map_alloc = new_alloc; chunk->map = new; @@ -1162,7 +1164,7 @@ static struct pcpu_alloc_info * __init pcpu_build_alloc_info( } /* - * Don't accept if wastage is over 25%. The + * Don't accept if wastage is over 1/3. The * greater-than comparison ensures upa==1 always * passes the following check. */ diff --git a/mm/percpu_up.c b/mm/percpu_up.c index c4351c7f57d2..db884fae5721 100644 --- a/mm/percpu_up.c +++ b/mm/percpu_up.c @@ -14,13 +14,13 @@ void __percpu *__alloc_percpu(size_t size, size_t align) * percpu sections on SMP for which this path isn't used. */ WARN_ON_ONCE(align > SMP_CACHE_BYTES); - return kzalloc(size, GFP_KERNEL); + return (void __percpu __force *)kzalloc(size, GFP_KERNEL); } EXPORT_SYMBOL_GPL(__alloc_percpu); void free_percpu(void __percpu *p) { - kfree(p); + kfree(this_cpu_ptr(p)); } EXPORT_SYMBOL_GPL(free_percpu); |