Re: [PATCH] powerpc/kasan: KASAN is not supported on RELOCATABLE && FSL_BOOKE

From: shaolexi <hidden>
Date: 2019-11-30 02:11:26
Also in: lkml

Le 29/11/2019 à 08:46, Christophe Leroy a écrit :
quoted

Le 29/11/2019 à 08:04, Lexi Shao a écrit :
quoted
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
quoted
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
quoted
Disable KASAN when RELOCATABLE is selected on fsl_booke for now until
it is supported.

Signed-off-by: Lexi Shao <redacted>
---
  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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help