From: Sunghyun Jin <mcsm...@gmail.com> Variable populated, which is a member of struct pcpu_chunk, is used as a unit of size of unsigned long in below code: ``` 1142 /* manage populated page bitmap */ 1143 chunk->immutable = true; 1144 bitmap_fill(chunk->populated, chunk->nr_pages); ```
``` 230 static inline void bitmap_fill(unsigned long *dst, unsigned int nbits) 231 { 232 unsigned int len = BITS_TO_LONGS(nbits) * sizeof(unsigned long); 233 memset(dst, 0xff, len); 234 } ``` However, size of populated is miscounted. So, I fix this minor part. Signed-off-by: Sunghyun Jin <mcsm...@gmail.com> --- mm/percpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/percpu.c b/mm/percpu.c index 696367b18222..d83e0032cb20 100644 --- a/mm/percpu.c +++ b/mm/percpu.c @@ -1300,7 +1300,7 @@ static struct pcpu_chunk * __init pcpu_alloc_first_chunk(unsigned long tmp_addr, /* allocate chunk */ alloc_size = sizeof(struct pcpu_chunk) + - BITS_TO_LONGS(region_size >> PAGE_SHIFT); + BITS_TO_LONGS(region_size >> PAGE_SHIFT) * sizeof(unsigned long); chunk = memblock_alloc(alloc_size, SMP_CACHE_BYTES); if (!chunk) panic("%s: Failed to allocate %zu bytes\n", __func__, -- 2.17.1