Skip to contentSkip to conversation

linux-next 20201126 - build error on arm allmodconfig

PATCH Valdis Klētnieks 2 participants 5 messages Nov 26, 2020 KASAN

lore
Share & tools
lore
#0 lore raw

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:

include/linux/kasan.h +0 -1
index 59538e795df4..26f2ab92e7ca 100644
@@ -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"... :)

#1 lore raw
Quoted 37 lines · Valdis Klētnieks

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:

include/linux/kasan.h +0 -1
index 59538e795df4..26f2ab92e7ca 100644
@@ -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.

Quoted 1 line

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

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

Signature · 2 lines
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
#2 lore raw
Quoted 1 line · Russell King - ARM Linux admin

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

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

#4 lore raw
Quoted 7 lines · Valdis Klētnieks
Quoted 1 line · Russell King - ARM Linux admin

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.

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