Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp588738iog; Mon, 13 Jun 2022 08:41:18 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vffIysN9OQ/tX0zeNaT2Zuweqk6RBFHfGzEzZ2A93bec3u3bP+UFY4zDe7Dokrc0JDF2KO X-Received: by 2002:a05:6402:4241:b0:431:574a:d74b with SMTP id g1-20020a056402424100b00431574ad74bmr364957edb.374.1655134878432; Mon, 13 Jun 2022 08:41:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655134878; cv=none; d=google.com; s=arc-20160816; b=XtUNhqk6j2JvnQU1osRRbQTylJEiPh9bwlKzCyU1HcZ0cSE/yQT6kOtHJFbLQfZq4J 7u8BTr53CIjZgtK3Xvg30dYO7h9V39gcEC/MdqRdcCNqZa0NqTtcdVZRyL2jUmsbjL49 N1mIzqjud7bZ4qGKt8eFkVDggiJFZbEvnp4vnne/0jB5EsckJZhreZNpwXEx3WDueGWw 6C6NaEISUSupBb2jj8J5KtRZf01Mpt1ElBnGAZgF7PIMzwvN20XjADIAXW3qF9unJzFb aqCiYDrtwL5VI3O7e8W6Xs42pXWhMvPLIl/0HkWZ88pvobNwIZYqCBLwoijHD54kfWAQ 1zfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=IngUz/56ehCbtvMLU+F6yCesE20YwM9B8Bf8treDMgs=; b=nP152Qi56Q+pNY+3r2UEb7acXqcsqLgskQhxYhzw0znShBO/RHDGgMejDoJQODbdBH xKDWLSZX5oEWjSGvKNdJk5adqTycuhv25NnzE1jNF6ONj0Qpy+HZuk++wMT0PruoY/5Z yha02epQdGwdEDI9WTZEmD3gJCnbasff58rJ1Rci/yl2LIwhubMpeWlJmxxQncvByKUm P1PnKKKg9XYjSfwMA/B7gWF2hDhe1dtAiKW/rStTQ+fEECQFHYtX3o5IrhZJbOJhLU9P nX3UT+v7nilbnerlGzUm8BcgyX5hMHim39Sb5ALVaTQ9UqQ+il4xejxChKGsOAKWSdPq q3Bg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=bekMBaya; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y15-20020a50eb8f000000b0042dd110b1bcsi7369946edr.629.2022.06.13.08.40.53; Mon, 13 Jun 2022 08:41:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=bekMBaya; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1359294AbiFMNMz (ORCPT + 99 others); Mon, 13 Jun 2022 09:12:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58842 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1357815AbiFMNGc (ORCPT ); Mon, 13 Jun 2022 09:06:32 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 88F1037A9F; Mon, 13 Jun 2022 04:18:37 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id E1E90B80EAA; Mon, 13 Jun 2022 11:18:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 54D47C34114; Mon, 13 Jun 2022 11:18:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1655119105; bh=N2lN/vr6RoxqrZh8pRE7zdpxZbQoDCiCU9uHcpBJTxU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bekMBayag3qsFO7hlAnpG62Nw3faNiqfbfrtrLCR8xwu6hKnJrD6ESjfQgyHb+YZ+ HfXxU49rckEb0rV3D46Oi2Aing8NKepQcFiUeYD39idDw6ENhG/Of0iai3UW+KkVM3 NHtFVwBGhArNm6CXkLLZtRsNJCYDiyG3I+NlaDxY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Erhard Furtner , Christophe Leroy , Michael Ellerman , Sasha Levin Subject: [PATCH 5.15 135/247] powerpc/kasan: Force thread size increase with KASAN Date: Mon, 13 Jun 2022 12:10:37 +0200 Message-Id: <20220613094927.053595378@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220613094922.843438024@linuxfoundation.org> References: <20220613094922.843438024@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-8.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Michael Ellerman [ 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 Reported-by: Christophe Leroy [mpe: Use MIN_THREAD_SHIFT as suggested by Christophe] Signed-off-by: Michael Ellerman Link: https://lore.kernel.org/r/20220601143114.133524-1-mpe@ellerman.id.au Signed-off-by: Sasha Levin --- 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