2021-10-11 16:22:24

by Naresh Kamboju

[permalink] [raw]
Subject: mm/kasan/init.c:282:20: error: redefinition of 'kasan_populate_early_vm_area_shadow'

Regression found on x86_64 gcc-11 built with KASAN enabled.
Following build warnings / errors reported on linux next 20211011.

metadata:
git_describe: next-20211011
git_repo: https://gitlab.com/Linaro/lkft/mirrors/next/linux-next
git_short_log: d3134eb5de85 (\"Add linux-next specific files for 20211011\")
target_arch: x86_64
toolchain: gcc-11

build error :
--------------
mm/kasan/init.c:282:20: error: redefinition of
'kasan_populate_early_vm_area_shadow'
282 | void __init __weak kasan_populate_early_vm_area_shadow(void *start,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/mm.h:34,
from include/linux/memblock.h:13,
from mm/kasan/init.c:9:
include/linux/kasan.h:463:20: note: previous definition of
'kasan_populate_early_vm_area_shadow' with type 'void(void *, long
unsigned int)'
463 | static inline void kasan_populate_early_vm_area_shadow(void *start,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[3]: *** [scripts/Makefile.build:288: mm/kasan/init.o] Error 1
make[3]: Target '__build' not remade because of errors.


Reported-by: Linux Kernel Functional Testing <[email protected]>

build link:
-----------
https://builds.tuxbuild.com/1zLv2snHfZN8QV01yA9MB8NhUZt/build.log

build config:
-------------
https://builds.tuxbuild.com/1zLv2snHfZN8QV01yA9MB8NhUZt/config

# To install tuxmake on your system globally
# sudo pip3 install -U tuxmake
tuxmake --runtime podman --target-arch x86_64 --toolchain gcc-11
--kconfig defconfig --kconfig-add
https://builds.tuxbuild.com/1zLv2snHfZN8QV01yA9MB8NhUZt/config

--
Linaro LKFT
https://lkft.linaro.org


2021-10-11 16:25:03

by Kefeng Wang

[permalink] [raw]
Subject: [PATCH] mm: kasan: Fix redefinition of 'kasan_populate_early_vm_area_shadow'

Move kasan_populate_early_vm_area_shadow() from mm/kasan/init.c to
mm/kasan/shadow.c, make it under CONFIG_KASAN_VMALLOC to fix the
redefinition issue.

Reported-by: Linux Kernel Functional Testing <[email protected]>
Cc: Andrey Ryabinin <[email protected]>
Cc: Catalin Marinas <[email protected]>
Cc: Dmitry Vyukov <[email protected]>
Cc: [email protected]
Signed-off-by: Kefeng Wang <[email protected]>
---
Hi Andrew,
Could you help to merge this into previos patch
"kasan: arm64: fix pcpu_page_first_chunk crash with KASAN_VMALLOC",
sorry for the build error.

mm/kasan/init.c | 5 -----
mm/kasan/shadow.c | 5 +++++
2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/mm/kasan/init.c b/mm/kasan/init.c
index d39577d088a1..cc64ed6858c6 100644
--- a/mm/kasan/init.c
+++ b/mm/kasan/init.c
@@ -279,11 +279,6 @@ int __ref kasan_populate_early_shadow(const void *shadow_start,
return 0;
}

-void __init __weak kasan_populate_early_vm_area_shadow(void *start,
- unsigned long size)
-{
-}
-
static void kasan_free_pte(pte_t *pte_start, pmd_t *pmd)
{
pte_t *pte;
diff --git a/mm/kasan/shadow.c b/mm/kasan/shadow.c
index 8d95ee52d019..4a4929b29a23 100644
--- a/mm/kasan/shadow.c
+++ b/mm/kasan/shadow.c
@@ -254,6 +254,11 @@ core_initcall(kasan_memhotplug_init);

#ifdef CONFIG_KASAN_VMALLOC

+void __init __weak kasan_populate_early_vm_area_shadow(void *start,
+ unsigned long size)
+{
+}
+
static int kasan_populate_vmalloc_pte(pte_t *ptep, unsigned long addr,
void *unused)
{
--
2.27.0

2021-10-11 16:25:32

by Kefeng Wang

[permalink] [raw]
Subject: Re: [PATCH] mm: kasan: Fix redefinition of 'kasan_populate_early_vm_area_shadow'



On 2021/10/11 20:32, Kefeng Wang wrote:
> Move kasan_populate_early_vm_area_shadow() from mm/kasan/init.c to
> mm/kasan/shadow.c, make it under CONFIG_KASAN_VMALLOC to fix the
> redefinition issue.
>
> Reported-by: Linux Kernel Functional Testing <[email protected]>
> Cc: Andrey Ryabinin <[email protected]>
> Cc: Catalin Marinas <[email protected]>
> Cc: Dmitry Vyukov <[email protected]>
> Cc: [email protected]
> Signed-off-by: Kefeng Wang <[email protected]>
> ---
> Hi Andrew,
> Could you help to merge this into previos patch
> "kasan: arm64: fix pcpu_page_first_chunk crash with KASAN_VMALLOC",
> sorry for the build error.

Correct Andrew's mail.

>
> mm/kasan/init.c | 5 -----
> mm/kasan/shadow.c | 5 +++++
> 2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/mm/kasan/init.c b/mm/kasan/init.c
> index d39577d088a1..cc64ed6858c6 100644
> --- a/mm/kasan/init.c
> +++ b/mm/kasan/init.c
> @@ -279,11 +279,6 @@ int __ref kasan_populate_early_shadow(const void *shadow_start,
> return 0;
> }
>
> -void __init __weak kasan_populate_early_vm_area_shadow(void *start,
> - unsigned long size)
> -{
> -}
> -
> static void kasan_free_pte(pte_t *pte_start, pmd_t *pmd)
> {
> pte_t *pte;
> diff --git a/mm/kasan/shadow.c b/mm/kasan/shadow.c
> index 8d95ee52d019..4a4929b29a23 100644
> --- a/mm/kasan/shadow.c
> +++ b/mm/kasan/shadow.c
> @@ -254,6 +254,11 @@ core_initcall(kasan_memhotplug_init);
>
> #ifdef CONFIG_KASAN_VMALLOC
>
> +void __init __weak kasan_populate_early_vm_area_shadow(void *start,
> + unsigned long size)
> +{
> +}
> +
> static int kasan_populate_vmalloc_pte(pte_t *ptep, unsigned long addr,
> void *unused)
> {
>

2021-10-11 16:26:47

by Naresh Kamboju

[permalink] [raw]
Subject: Re: mm/kasan/init.c:282:20: error: redefinition of 'kasan_populate_early_vm_area_shadow'

+ Andrew Morton <[email protected]>

On Mon, 11 Oct 2021 at 17:08, Naresh Kamboju <[email protected]> wrote:
>
> Regression found on x86_64 gcc-11 built with KASAN enabled.
> Following build warnings / errors reported on linux next 20211011.
>
> metadata:
> git_describe: next-20211011
> git_repo: https://gitlab.com/Linaro/lkft/mirrors/next/linux-next
> git_short_log: d3134eb5de85 (\"Add linux-next specific files for 20211011\")
> target_arch: x86_64
> toolchain: gcc-11
>
> build error :
> --------------
> mm/kasan/init.c:282:20: error: redefinition of
> 'kasan_populate_early_vm_area_shadow'
> 282 | void __init __weak kasan_populate_early_vm_area_shadow(void *start,
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from include/linux/mm.h:34,
> from include/linux/memblock.h:13,
> from mm/kasan/init.c:9:
> include/linux/kasan.h:463:20: note: previous definition of
> 'kasan_populate_early_vm_area_shadow' with type 'void(void *, long
> unsigned int)'
> 463 | static inline void kasan_populate_early_vm_area_shadow(void *start,
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> make[3]: *** [scripts/Makefile.build:288: mm/kasan/init.o] Error 1
> make[3]: Target '__build' not remade because of errors.
>
>
> Reported-by: Linux Kernel Functional Testing <[email protected]>
>
> build link:
> -----------
> https://builds.tuxbuild.com/1zLv2snHfZN8QV01yA9MB8NhUZt/build.log
>
> build config:
> -------------
> https://builds.tuxbuild.com/1zLv2snHfZN8QV01yA9MB8NhUZt/config
>
> # To install tuxmake on your system globally
> # sudo pip3 install -U tuxmake
> tuxmake --runtime podman --target-arch x86_64 --toolchain gcc-11
> --kconfig defconfig --kconfig-add
> https://builds.tuxbuild.com/1zLv2snHfZN8QV01yA9MB8NhUZt/config
>
> --
> Linaro LKFT
> https://lkft.linaro.org

2021-10-11 20:56:12

by Andrew Morton

[permalink] [raw]
Subject: Re: mm/kasan/init.c:282:20: error: redefinition of 'kasan_populate_early_vm_area_shadow'

On Mon, 11 Oct 2021 18:12:44 +0530 Naresh Kamboju <[email protected]> wrote:

> + Andrew Morton <[email protected]>
>
> On Mon, 11 Oct 2021 at 17:08, Naresh Kamboju <[email protected]> wrote:
> >
> > Regression found on x86_64 gcc-11 built with KASAN enabled.
> > Following build warnings / errors reported on linux next 20211011.
> >
> > metadata:
> > git_describe: next-20211011
> > git_repo: https://gitlab.com/Linaro/lkft/mirrors/next/linux-next
> > git_short_log: d3134eb5de85 (\"Add linux-next specific files for 20211011\")
> > target_arch: x86_64
> > toolchain: gcc-11
> >
> > build error :
> > --------------
> > mm/kasan/init.c:282:20: error: redefinition of
> > 'kasan_populate_early_vm_area_shadow'
> > 282 | void __init __weak kasan_populate_early_vm_area_shadow(void *start,
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > In file included from include/linux/mm.h:34,
> > from include/linux/memblock.h:13,
> > from mm/kasan/init.c:9:
> > include/linux/kasan.h:463:20: note: previous definition of
> > 'kasan_populate_early_vm_area_shadow' with type 'void(void *, long
> > unsigned int)'
> > 463 | static inline void kasan_populate_early_vm_area_shadow(void *start,
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > make[3]: *** [scripts/Makefile.build:288: mm/kasan/init.o] Error 1
> > make[3]: Target '__build' not remade because of errors.
> >
> >
> > Reported-by: Linux Kernel Functional Testing <[email protected]>
> >
> > build link:
> > -----------
> > https://builds.tuxbuild.com/1zLv2snHfZN8QV01yA9MB8NhUZt/build.log
> >
> > build config:
> > -------------
> > https://builds.tuxbuild.com/1zLv2snHfZN8QV01yA9MB8NhUZt/config
> >
> > # To install tuxmake on your system globally
> > # sudo pip3 install -U tuxmake
> > tuxmake --runtime podman --target-arch x86_64 --toolchain gcc-11
> > --kconfig defconfig --kconfig-add
> > https://builds.tuxbuild.com/1zLv2snHfZN8QV01yA9MB8NhUZt/config

Presumably "kasan: arm64: fix pcpu_page_first_chunk crash with
KASAN_VMALLOC". Let's cc Kefeng.

2021-10-12 01:05:05

by Kefeng Wang

[permalink] [raw]
Subject: Re: mm/kasan/init.c:282:20: error: redefinition of 'kasan_populate_early_vm_area_shadow'



On 2021/10/12 4:53, Andrew Morton wrote:
> On Mon, 11 Oct 2021 18:12:44 +0530 Naresh Kamboju <[email protected]> wrote:
>
>> + Andrew Morton <[email protected]>
>>
>> On Mon, 11 Oct 2021 at 17:08, Naresh Kamboju <[email protected]> wrote:
>>>
>>> Regression found on x86_64 gcc-11 built with KASAN enabled.
>>> Following build warnings / errors reported on linux next 20211011.
>>>
>>> metadata:
>>> git_describe: next-20211011
>>> git_repo: https://gitlab.com/Linaro/lkft/mirrors/next/linux-next
>>> git_short_log: d3134eb5de85 (\"Add linux-next specific files for 20211011\")
>>> target_arch: x86_64
>>> toolchain: gcc-11
>>>
>>> build error :
>>> --------------
>>> mm/kasan/init.c:282:20: error: redefinition of
>>> 'kasan_populate_early_vm_area_shadow'
>>> 282 | void __init __weak kasan_populate_early_vm_area_shadow(void *start,
>>> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> In file included from include/linux/mm.h:34,
>>> from include/linux/memblock.h:13,
>>> from mm/kasan/init.c:9:
>>> include/linux/kasan.h:463:20: note: previous definition of
>>> 'kasan_populate_early_vm_area_shadow' with type 'void(void *, long
>>> unsigned int)'
>>> 463 | static inline void kasan_populate_early_vm_area_shadow(void *start,
>>> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> make[3]: *** [scripts/Makefile.build:288: mm/kasan/init.o] Error 1
>>> make[3]: Target '__build' not remade because of errors.
>>>
>>>
>>> Reported-by: Linux Kernel Functional Testing <[email protected]>
>>>
>>> build link:
>>> -----------
>>> https://builds.tuxbuild.com/1zLv2snHfZN8QV01yA9MB8NhUZt/build.log
>>>
>>> build config:
>>> -------------
>>> https://builds.tuxbuild.com/1zLv2snHfZN8QV01yA9MB8NhUZt/config
>>>
>>> # To install tuxmake on your system globally
>>> # sudo pip3 install -U tuxmake
>>> tuxmake --runtime podman --target-arch x86_64 --toolchain gcc-11
>>> --kconfig defconfig --kconfig-add
>>> https://builds.tuxbuild.com/1zLv2snHfZN8QV01yA9MB8NhUZt/config
>
> Presumably "kasan: arm64: fix pcpu_page_first_chunk crash with
> KASAN_VMALLOC". Let's cc Kefeng.

Yes, I send a fix patch, and reply this mail, see
https://lore.kernel.org/linux-mm/[email protected]/

>
> .
>