diff options
author | Tejun Heo <tj@kernel.org> | 2009-02-23 21:57:20 -0500 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2009-02-23 21:57:20 -0500 |
commit | cb83b42e23bd6c4bf91793a320fbe83787c13596 (patch) | |
tree | 7f2b83bccf1be9548f84fa74867043aaad0a3e45 /mm/percpu.c | |
parent | cae3aeb83fef5a7c9c8ac40e653e59dd9a35469c (diff) |
percpu: fix pcpu_chunk_struct_size
Impact: fix short allocation leading to memory corruption
While dropping rvalue wrapping macros around global parameters,
pcpu_chunk_struct_size was set incorrectly resulting in shorter page
pointer array. Fix it.
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'mm/percpu.c')
-rw-r--r-- | mm/percpu.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/percpu.c b/mm/percpu.c index 997724c2ea24..ed92caa2aa3b 100644 --- a/mm/percpu.c +++ b/mm/percpu.c | |||
@@ -850,7 +850,7 @@ size_t __init pcpu_setup_static(pcpu_populate_pte_fn_t populate_pte_fn, | |||
850 | pcpu_chunk_size = num_possible_cpus() * pcpu_unit_size; | 850 | pcpu_chunk_size = num_possible_cpus() * pcpu_unit_size; |
851 | pcpu_nr_slots = pcpu_size_to_slot(pcpu_unit_size) + 1; | 851 | pcpu_nr_slots = pcpu_size_to_slot(pcpu_unit_size) + 1; |
852 | pcpu_chunk_struct_size = sizeof(struct pcpu_chunk) | 852 | pcpu_chunk_struct_size = sizeof(struct pcpu_chunk) |
853 | + (1 << pcpu_unit_pages_shift) * sizeof(struct page *); | 853 | + num_possible_cpus() * pcpu_unit_pages * sizeof(struct page *); |
854 | 854 | ||
855 | /* allocate chunk slots */ | 855 | /* allocate chunk slots */ |
856 | pcpu_slot = alloc_bootmem(pcpu_nr_slots * sizeof(pcpu_slot[0])); | 856 | pcpu_slot = alloc_bootmem(pcpu_nr_slots * sizeof(pcpu_slot[0])); |