All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christophe Leroy <christophe.leroy@csgroup.eu>
To: Michael Ellerman <mpe@ellerman.id.au>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH] powerpc/kasan: Force thread size increase with KASAN
Date: Wed, 1 Jun 2022 15:54:00 +0000	[thread overview]
Message-ID: <5aca588f-6d39-ef11-73d2-70a15bfdcd96@csgroup.eu> (raw)
In-Reply-To: <20220601143114.133524-1-mpe@ellerman.id.au>



Le 01/06/2022 à 16:31, Michael Ellerman a écrit :
> 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>
> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
> ---
>   arch/powerpc/Kconfig                   | 1 -
>   arch/powerpc/include/asm/thread_info.h | 9 +++++++--
>   2 files changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 54dbbb1d4b36..b1760d615bb7 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -790,7 +790,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 125328d1b980..c9735f93f8e6 100644
> --- a/arch/powerpc/include/asm/thread_info.h
> +++ b/arch/powerpc/include/asm/thread_info.h
> @@ -14,12 +14,17 @@
>   
>   #ifdef __KERNEL__
>   
> -#if defined(CONFIG_VMAP_STACK) && CONFIG_THREAD_SHIFT < PAGE_SHIFT
> -#define THREAD_SHIFT		PAGE_SHIFT
> +#ifdef CONFIG_KASAN
> +#define THREAD_SHIFT		(CONFIG_THREAD_SHIFT + 1)
>   #else
>   #define THREAD_SHIFT		CONFIG_THREAD_SHIFT
>   #endif
>   
> +#if defined(CONFIG_VMAP_STACK) && THREAD_SHIFT < PAGE_SHIFT
> +#undef THREAD_SHIFT

I dislike this undef.

I would was done

#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		MIN_THREAD_SHIFT
#endif


> +#define THREAD_SHIFT		PAGE_SHIFT
> +#endif
> +
>   #define THREAD_SIZE		(1 << THREAD_SHIFT)
>   
>   /*

  reply	other threads:[~2022-06-01 15:56 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-01 14:31 [PATCH] powerpc/kasan: Force thread size increase with KASAN Michael Ellerman
2022-06-01 15:54 ` Christophe Leroy [this message]
2022-06-09 14:44 ` Michael Ellerman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5aca588f-6d39-ef11-73d2-70a15bfdcd96@csgroup.eu \
    --to=christophe.leroy@csgroup.eu \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.