lkml.org 
[lkml]   [2022]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 135/247] powerpc/kasan: Force thread size increase with KASAN
    Date
    From: Michael Ellerman <mpe@ellerman.id.au>

    [ Upstream commit 3e8635fb2e072672cbc650989ffedf8300ad67fb ]

    KASAN causes increased stack usage, which can lead to stack overflows.

    The logic in Kconfig to suggest a larger default doesn't work if a user
    has CONFIG_EXPERT enabled and has an existing .config with a smaller
    value.

    Follow the lead of x86 and arm64, and force the thread size to be
    increased when KASAN is enabled.

    That also has the effect of enlarging the stack for 64-bit KASAN builds,
    which is also desirable.

    Fixes: edbadaf06710 ("powerpc/kasan: Fix stack overflow by increasing THREAD_SHIFT")
    Reported-by: Erhard Furtner <erhard_f@mailbox.org>
    Reported-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    [mpe: Use MIN_THREAD_SHIFT as suggested by Christophe]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220601143114.133524-1-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/powerpc/Kconfig | 1 -
    arch/powerpc/include/asm/thread_info.h | 10 ++++++++--
    2 files changed, 8 insertions(+), 3 deletions(-)

    diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
    index 6b9f523882c5..3bd3a3f16648 100644
    --- a/arch/powerpc/Kconfig
    +++ b/arch/powerpc/Kconfig
    @@ -768,7 +768,6 @@ config THREAD_SHIFT
    range 13 15
    default "15" if PPC_256K_PAGES
    default "14" if PPC64
    - default "14" if KASAN
    default "13"
    help
    Used to define the stack size. The default is almost always what you
    diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h
    index 2a4ea0e213a9..87013ac2a640 100644
    --- a/arch/powerpc/include/asm/thread_info.h
    +++ b/arch/powerpc/include/asm/thread_info.h
    @@ -14,10 +14,16 @@

    #ifdef __KERNEL__

    -#if defined(CONFIG_VMAP_STACK) && CONFIG_THREAD_SHIFT < PAGE_SHIFT
    +#ifdef CONFIG_KASAN
    +#define MIN_THREAD_SHIFT (CONFIG_THREAD_SHIFT + 1)
    +#else
    +#define MIN_THREAD_SHIFT CONFIG_THREAD_SHIFT
    +#endif
    +
    +#if defined(CONFIG_VMAP_STACK) && MIN_THREAD_SHIFT < PAGE_SHIFT
    #define THREAD_SHIFT PAGE_SHIFT
    #else
    -#define THREAD_SHIFT CONFIG_THREAD_SHIFT
    +#define THREAD_SHIFT MIN_THREAD_SHIFT
    #endif

    #define THREAD_SIZE (1 << THREAD_SHIFT)
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-13 15:14    [W:4.040 / U:0.572 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site