aboutsummaryrefslogtreecommitdiffstats
path: root/mm/page_alloc.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2010-03-10 18:20:40 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2010-03-12 18:52:28 -0500
commit2d30a1f6315b8940537e8e98882c6038fbac9ba5 (patch)
tree11936ee1bdab8b01503c3e71b2868a8139c9d00a /mm/page_alloc.c
parent53bddb4e9f3f53df02a783751984ddeade71b085 (diff)
mm: do not iterate over NR_CPUS in __zone_pcp_update()
__zone_pcp_update() iterates over NR_CPUS instead of limiting the access to the possible cpus. This might result in access to uninitialized areas as the per cpu allocator only populates the per cpu memory for possible cpus. This problem was created as a result of the dynamic allocation of pagesets from percpu memory that went in during the merge window - commit 99dcc3e5a94ed491fbef402831d8c0bbb267f995 ("this_cpu: Page allocator conversion"). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Pekka Enberg <penberg@cs.helsinki.fi> Acked-by: Tejun Heo <tj@kernel.org> Acked-by: Christoph Lameter <cl@linux-foundation.org> Acked-by: Mel Gorman <mel@csn.ul.ie> Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r--mm/page_alloc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index a8182c89de59..78ce90dd671f 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -3224,7 +3224,7 @@ static int __zone_pcp_update(void *data)
3224 int cpu; 3224 int cpu;
3225 unsigned long batch = zone_batchsize(zone), flags; 3225 unsigned long batch = zone_batchsize(zone), flags;
3226 3226
3227 for (cpu = 0; cpu < NR_CPUS; cpu++) { 3227 for_each_possible_cpu(cpu) {
3228 struct per_cpu_pageset *pset; 3228 struct per_cpu_pageset *pset;
3229 struct per_cpu_pages *pcp; 3229 struct per_cpu_pages *pcp;
3230 3230