linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] powerpc/kasan: KASAN is not supported on RELOCATABLE && FSL_BOOKE
@ 2019-11-29  7:04 Lexi Shao
  2019-11-29  7:46 ` Christophe Leroy
  0 siblings, 1 reply; 4+ messages in thread
From: Lexi Shao @ 2019-11-29  7:04 UTC (permalink / raw)
  To: benh, paulus, mpe, christophe.leroy
  Cc: liucheng32, yi.zhang, wangkefeng.wang, shaolexi, linux-kernel,
	linuxppc-dev

CONFIG_RELOCATABLE and CONFIG_KASAN cannot be enabled at the same time
on ppce500 fsl_booke. All functions called before kasan_early_init()
should be disabled with kasan check. When CONFIG_RELOCATABLE is enabled
on ppce500 fsl_booke, relocate_init() is called before kasan_early_init()
which triggers kasan check and results in boot failure.
Call trace and functions which triggers kasan check(*):
  - _start
   - set_ivor
    - relocate_init(*)
     - early_get_first_memblock_info(*)
      - of_scan_flat_dt(*)
	...
    - kasan_early_init

Potential solutions could be 1. implement relocate_init and all its children
function in a seperate file or 2. introduce a global vairable in KASAN, only
enable KASAN check when init is done.

Disable KASAN when RELOCATABLE is selected on fsl_booke for now until
it is supported.

Signed-off-by: Lexi Shao <shaolexi@huawei.com>
---
 arch/powerpc/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 3e56c9c2f16e..14f3da63c088 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -171,7 +171,7 @@ config PPC
 	select HAVE_ARCH_AUDITSYSCALL
 	select HAVE_ARCH_HUGE_VMAP		if PPC_BOOK3S_64 && PPC_RADIX_MMU
 	select HAVE_ARCH_JUMP_LABEL
-	select HAVE_ARCH_KASAN			if PPC32
+	select HAVE_ARCH_KASAN			if PPC32 && !(RELOCATABLE && FSL_BOOKE)
 	select HAVE_ARCH_KGDB
 	select HAVE_ARCH_MMAP_RND_BITS
 	select HAVE_ARCH_MMAP_RND_COMPAT_BITS	if COMPAT
-- 
2.12.3


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] powerpc/kasan: KASAN is not supported on RELOCATABLE && FSL_BOOKE
  2019-11-29  7:04 [PATCH] powerpc/kasan: KASAN is not supported on RELOCATABLE && FSL_BOOKE Lexi Shao
@ 2019-11-29  7:46 ` Christophe Leroy
  2019-11-29 14:13   ` Christophe Leroy
  0 siblings, 1 reply; 4+ messages in thread
From: Christophe Leroy @ 2019-11-29  7:46 UTC (permalink / raw)
  To: Lexi Shao, benh, paulus, mpe
  Cc: liucheng32, yi.zhang, wangkefeng.wang, linux-kernel, linuxppc-dev



Le 29/11/2019 à 08:04, Lexi Shao a écrit :
> CONFIG_RELOCATABLE and CONFIG_KASAN cannot be enabled at the same time
> on ppce500 fsl_booke. All functions called before kasan_early_init()
> should be disabled with kasan check. When CONFIG_RELOCATABLE is enabled
> on ppce500 fsl_booke, relocate_init() is called before kasan_early_init()
> which triggers kasan check and results in boot failure.
> Call trace and functions which triggers kasan check(*):
>    - _start
>     - set_ivor
>      - relocate_init(*)
>       - early_get_first_memblock_info(*)
>        - of_scan_flat_dt(*)
> 	...
>      - kasan_early_init
> 
> Potential solutions could be 1. implement relocate_init and all its children
> function in a seperate file or 2. introduce a global vairable in KASAN, only
> enable KASAN check when init is done.

Solution 1 seems uneasy. of_scan_flat_dt() and children are general 
functions that can't be set aside.
Solution 2 would destroy performance, and would anyway not work with 
inline instrumentation.

Have you tried moving the call to kasan_early_init() before the call of 
relocate_init() ?
On other PPC32, kasan_early_init() is the first thing done after 
activating the MMU. But AFAIU, MMU is always active on BOOKE though.

Christophe

> 
> Disable KASAN when RELOCATABLE is selected on fsl_booke for now until
> it is supported.
> 
> Signed-off-by: Lexi Shao <shaolexi@huawei.com>
> ---
>   arch/powerpc/Kconfig | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 3e56c9c2f16e..14f3da63c088 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -171,7 +171,7 @@ config PPC
>   	select HAVE_ARCH_AUDITSYSCALL
>   	select HAVE_ARCH_HUGE_VMAP		if PPC_BOOK3S_64 && PPC_RADIX_MMU
>   	select HAVE_ARCH_JUMP_LABEL
> -	select HAVE_ARCH_KASAN			if PPC32
> +	select HAVE_ARCH_KASAN			if PPC32 && !(RELOCATABLE && FSL_BOOKE)
>   	select HAVE_ARCH_KGDB
>   	select HAVE_ARCH_MMAP_RND_BITS
>   	select HAVE_ARCH_MMAP_RND_COMPAT_BITS	if COMPAT
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] powerpc/kasan: KASAN is not supported on RELOCATABLE && FSL_BOOKE
  2019-11-29  7:46 ` Christophe Leroy
@ 2019-11-29 14:13   ` Christophe Leroy
  0 siblings, 0 replies; 4+ messages in thread
From: Christophe Leroy @ 2019-11-29 14:13 UTC (permalink / raw)
  To: Lexi Shao, benh, paulus, mpe
  Cc: linux-kernel, wangkefeng.wang, linuxppc-dev, liucheng32, yi.zhang



Le 29/11/2019 à 08:46, Christophe Leroy a écrit :
> 
> 
> Le 29/11/2019 à 08:04, Lexi Shao a écrit :
>> CONFIG_RELOCATABLE and CONFIG_KASAN cannot be enabled at the same time
>> on ppce500 fsl_booke. All functions called before kasan_early_init()
>> should be disabled with kasan check. When CONFIG_RELOCATABLE is enabled
>> on ppce500 fsl_booke, relocate_init() is called before kasan_early_init()
>> which triggers kasan check and results in boot failure.
>> Call trace and functions which triggers kasan check(*):
>>    - _start
>>     - set_ivor
>>      - relocate_init(*)
>>       - early_get_first_memblock_info(*)
>>        - of_scan_flat_dt(*)
>>     ...
>>      - kasan_early_init
>>
>> Potential solutions could be 1. implement relocate_init and all its 
>> children
>> function in a seperate file or 2. introduce a global vairable in 
>> KASAN, only
>> enable KASAN check when init is done.
> 
> Solution 1 seems uneasy. of_scan_flat_dt() and children are general 
> functions that can't be set aside.
> Solution 2 would destroy performance, and would anyway not work with 
> inline instrumentation.
> 
> Have you tried moving the call to kasan_early_init() before the call of 
> relocate_init() ?

I just tried it with QEMU, it works. I'll send a patch out soon.

Christophe


> On other PPC32, kasan_early_init() is the first thing done after 
> activating the MMU. But AFAIU, MMU is always active on BOOKE though.
> 
> Christophe
> 
>>
>> Disable KASAN when RELOCATABLE is selected on fsl_booke for now until
>> it is supported.
>>
>> Signed-off-by: Lexi Shao <shaolexi@huawei.com>
>> ---
>>   arch/powerpc/Kconfig | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
>> index 3e56c9c2f16e..14f3da63c088 100644
>> --- a/arch/powerpc/Kconfig
>> +++ b/arch/powerpc/Kconfig
>> @@ -171,7 +171,7 @@ config PPC
>>       select HAVE_ARCH_AUDITSYSCALL
>>       select HAVE_ARCH_HUGE_VMAP        if PPC_BOOK3S_64 && PPC_RADIX_MMU
>>       select HAVE_ARCH_JUMP_LABEL
>> -    select HAVE_ARCH_KASAN            if PPC32
>> +    select HAVE_ARCH_KASAN            if PPC32 && !(RELOCATABLE && 
>> FSL_BOOKE)
>>       select HAVE_ARCH_KGDB
>>       select HAVE_ARCH_MMAP_RND_BITS
>>       select HAVE_ARCH_MMAP_RND_COMPAT_BITS    if COMPAT
>>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] powerpc/kasan: KASAN is not supported on RELOCATABLE && FSL_BOOKE
@ 2019-11-30  2:09 shaolexi
  0 siblings, 0 replies; 4+ messages in thread
From: shaolexi @ 2019-11-30  2:09 UTC (permalink / raw)
  To: Christophe Leroy, benh, paulus, mpe
  Cc: linux-kernel, Wangkefeng (OS Kernel Lab),
	linuxppc-dev, liucheng (G), zhangyi (F)

>Le 29/11/2019 à 08:46, Christophe Leroy a écrit :
>>
>>
>> Le 29/11/2019 à 08:04, Lexi Shao a écrit :
>>> CONFIG_RELOCATABLE and CONFIG_KASAN cannot be enabled at the same
>>> time on ppce500 fsl_booke. All functions called before
>>> kasan_early_init() should be disabled with kasan check. When
>>> CONFIG_RELOCATABLE is enabled on ppce500 fsl_booke, relocate_init()
>>> is called before kasan_early_init() which triggers kasan check and results in boot failure.
>>> Call trace and functions which triggers kasan check(*):
>>>    - _start
>>>     - set_ivor
>>>      - relocate_init(*)
>>>       - early_get_first_memblock_info(*)
>>>        - of_scan_flat_dt(*)
>>>     ...
>>>      - kasan_early_init
>>>
>>> Potential solutions could be 1. implement relocate_init and all its
>>> children function in a seperate file or 2. introduce a global
>>> vairable in KASAN, only enable KASAN check when init is done.
>>
>> Solution 1 seems uneasy. of_scan_flat_dt() and children are general
>> functions that can't be set aside.
>> Solution 2 would destroy performance, and would anyway not work with
>> inline instrumentation.
>>
>> Have you tried moving the call to kasan_early_init() before the call
>> of
>> relocate_init() ?
>
>I just tried it with QEMU, it works. I'll send a patch out soon.
>

Yes I tried but couldn't get it to work on a P1010. There might be conflict
somewhere else with my kernel config. Will keep on debugging.
Thanks for the prompt reply and trying it out on qemu.

Lexi

>
>
>> On other PPC32, kasan_early_init() is the first thing done after
>> activating the MMU. But AFAIU, MMU is always active on BOOKE though.
>>
>> Christophe
>>
>>>
>>> Disable KASAN when RELOCATABLE is selected on fsl_booke for now until
>>> it is supported.
>>>
>>> Signed-off-by: Lexi Shao <shaolexi@huawei.com>
>>> ---
>>>   arch/powerpc/Kconfig | 2 +-
>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index
>>> 3e56c9c2f16e..14f3da63c088 100644
>>> --- a/arch/powerpc/Kconfig
>>> +++ b/arch/powerpc/Kconfig
>>> @@ -171,7 +171,7 @@ config PPC
>>>       select HAVE_ARCH_AUDITSYSCALL
>>>       select HAVE_ARCH_HUGE_VMAP        if PPC_BOOK3S_64 &&
>>> PPC_RADIX_MMU
>>>       select HAVE_ARCH_JUMP_LABEL
>>> -    select HAVE_ARCH_KASAN            if PPC32
>>> +    select HAVE_ARCH_KASAN            if PPC32 && !(RELOCATABLE &&
>>> FSL_BOOKE)
>>>       select HAVE_ARCH_KGDB
>>>       select HAVE_ARCH_MMAP_RND_BITS
>>>       select HAVE_ARCH_MMAP_RND_COMPAT_BITS    if COMPAT
>>>

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-11-30  2:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-29  7:04 [PATCH] powerpc/kasan: KASAN is not supported on RELOCATABLE && FSL_BOOKE Lexi Shao
2019-11-29  7:46 ` Christophe Leroy
2019-11-29 14:13   ` Christophe Leroy
2019-11-30  2:09 shaolexi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).