Hi Peng, On Wed, Feb 20, 2019 at 01:32:55PM +0000, Peng Fan wrote: > 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 <peng.fan@xxxxxxx> > --- > mm/percpu.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > 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]; > > /* > -- > 2.16.4 > This seems right to me. It is quite the edge case though. I've queued this for 5.1. Thanks, Dennis