2020-11-26 13:28:27

by Valdis Klētnieks

[permalink] [raw]
Subject: linux-next 20201126 - build error on arm allmodconfig

Seems something is giving it indigestion regarding asmlinkage...

CC arch/arm/mm/kasan_init.o
In file included from ./include/linux/kasan.h:15,
from arch/arm/mm/kasan_init.c:11:
./arch/arm/include/asm/kasan.h:26:11: error: expected ';' before 'void'
asmlinkage void kasan_early_init(void);
^~~~~
;
make[2]: *** [scripts/Makefile.build:283: arch/arm/mm/kasan_init.o] Error 1
make[1]: *** [scripts/Makefile.build:500: arch/arm/mm] Error 2
make: *** [Makefile:1803: arch/arm] Error 2

Git bisect points at:

commit 2df573d2ca4c1ce6ea33cb7849222f771e759211
Author: Andrey Konovalov <[email protected]>
Date: Tue Nov 24 16:45:08 2020 +1100

kasan: shadow declarations only for software modes

Looks like it's this chunk:

diff --git a/include/linux/kasan.h b/include/linux/kasan.h
index 59538e795df4..26f2ab92e7ca 100644
--- a/include/linux/kasan.h
+++ b/include/linux/kasan.h
@@ -11,7 +11,6 @@ struct task_struct;

#ifdef CONFIG_KASAN

-#include <linux/pgtable.h>
#include <asm/kasan.h>

Testing shows putting that #include back in makes it compile correctly,
but it's not obvious why putting that back makes 'asmlinkage' recognized.

"You are in a twisty little maze of #includes, all different"... :)


Attachments:
(No filename) (849.00 B)

2020-11-26 14:18:34

by Russell King (Oracle)

[permalink] [raw]
Subject: Re: linux-next 20201126 - build error on arm allmodconfig

On Thu, Nov 26, 2020 at 08:25:02AM -0500, Valdis Klētnieks wrote:
> Seems something is giving it indigestion regarding asmlinkage...
>
> CC arch/arm/mm/kasan_init.o
> In file included from ./include/linux/kasan.h:15,
> from arch/arm/mm/kasan_init.c:11:
> ./arch/arm/include/asm/kasan.h:26:11: error: expected ';' before 'void'
> asmlinkage void kasan_early_init(void);
> ^~~~~
> ;
> make[2]: *** [scripts/Makefile.build:283: arch/arm/mm/kasan_init.o] Error 1
> make[1]: *** [scripts/Makefile.build:500: arch/arm/mm] Error 2
> make: *** [Makefile:1803: arch/arm] Error 2
>
> Git bisect points at:
>
> commit 2df573d2ca4c1ce6ea33cb7849222f771e759211
> Author: Andrey Konovalov <[email protected]>
> Date: Tue Nov 24 16:45:08 2020 +1100
>
> kasan: shadow declarations only for software modes
>
> Looks like it's this chunk:
>
> diff --git a/include/linux/kasan.h b/include/linux/kasan.h
> index 59538e795df4..26f2ab92e7ca 100644
> --- a/include/linux/kasan.h
> +++ b/include/linux/kasan.h
> @@ -11,7 +11,6 @@ struct task_struct;
>
> #ifdef CONFIG_KASAN
>
> -#include <linux/pgtable.h>
> #include <asm/kasan.h>
>
> Testing shows putting that #include back in makes it compile correctly,
> but it's not obvious why putting that back makes 'asmlinkage' recognized.
>
> "You are in a twisty little maze of #includes, all different"... :)

The real answer is for asm/kasan.h to include linux/linkage.h

--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

2020-11-26 14:20:16

by Valdis Klētnieks

[permalink] [raw]
Subject: Re: linux-next 20201126 - build error on arm allmodconfig

On Thu, 26 Nov 2020 14:14:29 +0000, Russell King - ARM Linux admin said:

> The real answer is for asm/kasan.h to include linux/linkage.h

OK... I'll cook up the patch.


Attachments:
(No filename) (849.00 B)

2020-11-26 14:27:25

by Valdis Klētnieks

[permalink] [raw]
Subject: Re: linux-next 20201126 - build error on arm allmodconfig

On Thu, 26 Nov 2020 14:14:29 +0000, Russell King - ARM Linux admin said:

> The real answer is for asm/kasan.h to include linux/linkage.h

Looking deeper, there's 7 different arch/../asm/kasan.h - are we better off
patching all 7, or having include/linux/kasan.h include it just before
the include of asm/kasan.h?


Attachments:
(No filename) (849.00 B)

2020-11-27 08:32:08

by Russell King (Oracle)

[permalink] [raw]
Subject: Re: linux-next 20201126 - build error on arm allmodconfig

On Thu, Nov 26, 2020 at 09:22:53AM -0500, Valdis Klētnieks wrote:
> On Thu, 26 Nov 2020 14:14:29 +0000, Russell King - ARM Linux admin said:
>
> > The real answer is for asm/kasan.h to include linux/linkage.h
>
> Looking deeper, there's 7 different arch/../asm/kasan.h - are we better off
> patching all 7, or having include/linux/kasan.h include it just before
> the include of asm/kasan.h?

I wouldn't like to say definitively - it depends on what the policy
now is. However, linux/linage.h is way cheaper than linux/pgtable.h
so it probably makes sense for linux/kasan.h to include it given the
number of asm/kasan.h headers needing it.

--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!