From 2de7852fe9096e92c5f10faa472550a2a7121cea Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Wed, 20 Feb 2019 13:32:55 +0000 Subject: percpu: use nr_groups as check condition group_cnt array is defined with NR_CPUS entries, but normally nr_groups will not reach up to NR_CPUS. So there is no issue to the current code. Checking other parts of pcpu_build_alloc_info, use nr_groups as check condition, so make it consistent to use 'group < nr_groups' as for loop check. In case we do have nr_groups equals with NR_CPUS, we could also avoid memory access out of bounds. Signed-off-by: Peng Fan Signed-off-by: Dennis Zhou --- mm/percpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mm') diff --git a/mm/percpu.c b/mm/percpu.c index db86282fd024..c5c750781628 100644 --- a/mm/percpu.c +++ b/mm/percpu.c @@ -2384,7 +2384,7 @@ static struct pcpu_alloc_info * __init pcpu_build_alloc_info( ai->atom_size = atom_size; ai->alloc_size = alloc_size; - for (group = 0, unit = 0; group_cnt[group]; group++) { + for (group = 0, unit = 0; group < nr_groups; group++) { struct pcpu_group_info *gi = &ai->groups[group]; /* -- cgit From 1b046b445c0f856c3c1eed38a348bd87cc2dc730 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Sun, 24 Feb 2019 13:13:50 +0000 Subject: percpu: km: no need to consider pcpu_group_offsets[0] percpu-km is used on UP systems which only has one group, so the group offset will be always 0, there is no need to subtract pcpu_group_offsets[0] when assigning chunk->base_addr Signed-off-by: Peng Fan Acked-by: Christoph Lameter Signed-off-by: Dennis Zhou --- mm/percpu-km.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mm') diff --git a/mm/percpu-km.c b/mm/percpu-km.c index 0f643dc2dc65..b68d5df14731 100644 --- a/mm/percpu-km.c +++ b/mm/percpu-km.c @@ -67,7 +67,7 @@ static struct pcpu_chunk *pcpu_create_chunk(gfp_t gfp) pcpu_set_page_chunk(nth_page(pages, i), chunk); chunk->data = pages; - chunk->base_addr = page_address(pages) - pcpu_group_offsets[0]; + chunk->base_addr = page_address(pages); spin_lock_irqsave(&pcpu_lock, flags); pcpu_chunk_populated(chunk, 0, nr_pages, false); -- cgit