Commit 3e8635fb authored by Michael Ellerman's avatar Michael Ellerman
Browse files

powerpc/kasan: Force thread size increase with KASAN



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: edbadaf0 ("powerpc/kasan: Fix stack overflow by increasing THREAD_SHIFT")
Reported-by: default avatarErhard Furtner <erhard_f@mailbox.org>
Reported-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
[mpe: Use MIN_THREAD_SHIFT as suggested by Christophe]
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20220601143114.133524-1-mpe@ellerman.id.au
parent 07bf9431
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -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
+8 −2
Original line number Diff line number Diff line
@@ -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)