2021-05-12 05:29:35

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build failure after merge of the akpm-current tree

Hi all,

As Randy also reported ...

After merging the akpm-current tree, today's linux-next build (powerpc
ppc64_defconfig) failed like this:

mm/slab_common.c:764:8: error: array index in initializer exceeds array bounds
764 | .name[KMALLOC_RECLAIM] = "kmalloc-rcl-" #__short_size, \
| ^~~~~~~~~~~~~~~
mm/slab_common.c:776:2: note: in expansion of macro 'INIT_KMALLOC_INFO'
776 | INIT_KMALLOC_INFO(0, 0),
| ^~~~~~~~~~~~~~~~~
mm/slab_common.c:756:39: error: array index in initializer exceeds array bounds
756 | #define KMALLOC_CGROUP_NAME(sz) .name[KMALLOC_CGROUP] = "kmalloc-cg-" #sz,
| ^~~~~~~~~~~~~~
mm/slab_common.c:765:2: note: in expansion of macro 'KMALLOC_CGROUP_NAME'
765 | KMALLOC_CGROUP_NAME(__short_size) \
| ^~~~~~~~~~~~~~~~~~~

and more

Caused by commits

4d57437a3d3c ("mm: memcg/slab: create a new set of kmalloc-cg-<n> caches")
0727bf117622 ("mm: memcg/slab: don't create kmalloc-cg caches with cgroup.memory=nokmem")
d795c307bd3a ("mm: memcg/slab: disable cache merging for KMALLOC_NORMAL caches")

At least they are the commits I have reverted to fix this.

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (495.00 B)
OpenPGP digital signature

2021-05-12 14:04:21

by Waiman Long

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the akpm-current tree

On 5/12/21 1:28 AM, Stephen Rothwell wrote:
> Hi all,
>
> As Randy also reported ...
>
> After merging the akpm-current tree, today's linux-next build (powerpc
> ppc64_defconfig) failed like this:
>
> mm/slab_common.c:764:8: error: array index in initializer exceeds array bounds
> 764 | .name[KMALLOC_RECLAIM] = "kmalloc-rcl-" #__short_size, \
> | ^~~~~~~~~~~~~~~
> mm/slab_common.c:776:2: note: in expansion of macro 'INIT_KMALLOC_INFO'
> 776 | INIT_KMALLOC_INFO(0, 0),
> | ^~~~~~~~~~~~~~~~~
> mm/slab_common.c:756:39: error: array index in initializer exceeds array bounds
> 756 | #define KMALLOC_CGROUP_NAME(sz) .name[KMALLOC_CGROUP] = "kmalloc-cg-" #sz,
> | ^~~~~~~~~~~~~~
> mm/slab_common.c:765:2: note: in expansion of macro 'KMALLOC_CGROUP_NAME'
> 765 | KMALLOC_CGROUP_NAME(__short_size) \
> | ^~~~~~~~~~~~~~~~~~~
>
> and more
>
> Caused by commits
>
> 4d57437a3d3c ("mm: memcg/slab: create a new set of kmalloc-cg-<n> caches")
> 0727bf117622 ("mm: memcg/slab: don't create kmalloc-cg caches with cgroup.memory=nokmem")
> d795c307bd3a ("mm: memcg/slab: disable cache merging for KMALLOC_NORMAL caches")
>
> At least they are the commits I have reverted to fix this.
>
Sorry about that. It turns out that construct like that below doesn't work.

enum kmalloc_cache_type {
??????? KMALLOC_NORMAL = 0,
#ifdef CONFIG_MEMCG_KMEM
??????? KMALLOC_CGROUP,
#else
??????? KMALLOC_CGROUP = KMALLOC_NORMAL,
#endif
??????? KMALLOC_RECLAIM,
#ifdef CONFIG_ZONE_DMA
??????? KMALLOC_DMA,
#else
??????? KMALLOC_DMA = KMALLOC_NORMAL,
#endif
??????? NR_KMALLOC_TYPES
};

The first ifdef is fine, but the second one will reset the enumeration
count back to 0 if CONFIG_ZONE_DMA is not defined causing
NR_KMALLOC_TYPES set to 1. Will send a new version to fix that.

Cheers,
Longman