From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 34B25C44503 for ; Thu, 9 Jul 2026 02:13:22 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [127.0.0.1]) by lists.ozlabs.org (Postfix) with ESMTP id 4gwdmJ5z4yz3cF1; Thu, 09 Jul 2026 12:13:20 +1000 (AEST) Authentication-Results: lists.ozlabs.org; arc=none smtp.remote-ip=113.46.200.225 ARC-Seal: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1783563200; cv=none; b=CLpzpzANb4UJEpl847KKnul+Dr0DWZCiPaWdeFwYnYzgiki0Idw48407pecb+anVG/WRBdhfey/XkVBfLL8CaiPgYDcXhBA7ECxnhIBNds2HAYxFrvoV+1ebOvNKfNBwN+tjq84znQto3JnrUi8cPRagm9uMl9SJj+/k9JvGjj86E5QpCT2ZZ6XEFZGSZCsUu7TtSzR3O5EcOs+mDYGm8GFBcUOa1CaTXgwANoQMPBjvjMsj6if2kAtt+BzcwBEWt1HLgfCqv/cGYAiVlitO/gCDo/b714QT6e/zogoYkw7IDEBb4HPUplVOPUxdmA+/PY9BFm3eKdXpzXL71J+cnw== ARC-Message-Signature: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1783563200; c=relaxed/relaxed; bh=EIzhkxswirYpNGm9CWwkdDS2HF3tntCDkdxaAlmwFV4=; h=Message-ID:Date:MIME-Version:Subject:To:CC:References:From: In-Reply-To:Content-Type; b=KW3eJzW4bCJpkKWVf3c+NXu4hYVVS0767xWBpB9NnX6D+/uwVbiKXoTCujYk1gZk3buYEecuCMjYZuQEAy6kFjqd6OV0ZqestkS0l+6RkrEqtFSgBlOVuaOr3MzsJpNWvSSmcgLh0NtgvBsRwPxY9Y7UBAPnVtqXtZbSXdo7kfK3+CV8UuKXI5CXPeLNPXs4RULX/Ax7O/sVB9Z+ajaUUy71URZ3FZmQ6Nip/njvdarKHjyPf+gjzU/u9tDdV/HOZ9C1wwFrR/as63+eOuBIL/Pn1Ys3QkScm7+8pe5aShRTgrV0FCQR6Ts0/shPa7souR8nRPmchXfK+/pskww37Q== ARC-Authentication-Results: i=1; lists.ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com; dkim=pass (1024-bit key; unprotected) header.d=huawei.com header.i=@huawei.com header.a=rsa-sha256 header.s=dkim header.b=2rmhw3tA; dkim-atps=neutral; spf=pass (client-ip=113.46.200.225; helo=canpmsgout10.his.huawei.com; envelope-from=ruanjinjie@huawei.com; receiver=lists.ozlabs.org) smtp.mailfrom=huawei.com Authentication-Results: lists.ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com Authentication-Results: lists.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=huawei.com header.i=@huawei.com header.a=rsa-sha256 header.s=dkim header.b=2rmhw3tA; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=huawei.com (client-ip=113.46.200.225; helo=canpmsgout10.his.huawei.com; envelope-from=ruanjinjie@huawei.com; receiver=lists.ozlabs.org) Received: from canpmsgout10.his.huawei.com (canpmsgout10.his.huawei.com [113.46.200.225]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4gwdmH5Lm0z3cDt for ; Thu, 09 Jul 2026 12:13:19 +1000 (AEST) dkim-signature: v=1; a=rsa-sha256; d=huawei.com; s=dkim; c=relaxed/relaxed; q=dns/txt; h=From; bh=EIzhkxswirYpNGm9CWwkdDS2HF3tntCDkdxaAlmwFV4=; b=2rmhw3tAjKXtz09O7hvY7cAlY/1Yd/KOqZ+ZN+0RclN3O1JQ97bO9iM01OI1tNyjUBfVBZ+JE tsopHd70NpH1/LAqiYYENqjY7FRDJ+e6LjhHTLPLPPp1WxyG71HEpSeN/TNuJ3k9DIYW/ZQQXNg +wXo3TuMW926WHIty2rH81A= Received: from mail.maildlp.com (unknown [172.19.163.15]) by canpmsgout10.his.huawei.com (SkyGuard) with ESMTPS id 4gwdYY6NQGz1K97H; Thu, 9 Jul 2026 10:04:01 +0800 (CST) Received: from dggpemf500011.china.huawei.com (unknown [7.185.36.131]) by mail.maildlp.com (Postfix) with ESMTPS id 1EDDC40578; Thu, 9 Jul 2026 10:13:15 +0800 (CST) Received: from [10.67.109.254] (10.67.109.254) by dggpemf500011.china.huawei.com (7.185.36.131) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Thu, 9 Jul 2026 10:13:12 +0800 Message-ID: <289cf9a8-aa46-4dac-b370-07a35c6c7c7e@huawei.com> Date: Thu, 9 Jul 2026 10:13:11 +0800 X-Mailing-List: linuxppc-dev@lists.ozlabs.org List-Id: List-Help: List-Owner: List-Post: List-Archive: , List-Subscribe: , , List-Unsubscribe: Precedence: list MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [patch 02/18] randomize_kstack: Provide add_random_kstack_offset_irqsoff() To: Thomas Gleixner , LKML CC: Peter Zijlstra , Kees Cook , Michael Ellerman , Shrikanth Hegde , , Huacai Chen , , Paul Walmsley , Palmer Dabbelt , , Sven Schnelle , , , Mark Rutland , Andy Lutomirski , Oleg Nesterov , Richard Henderson , Russell King , Catalin Marinas , Guo Ren , Geert Uytterhoeven , Thomas Bogendoerfer , Helge Deller , Yoshinori Sato , Richard Weinberger , Chris Zankel , , , , , , , , , Arnd Bergmann , Vineet Gupta , Will Deacon , Brian Cain , Michal Simek , Dinh Nguyen , "David S. Miller" , Andreas Larsson , , , , , , =?UTF-8?Q?Michal_Such=C3=A1nek?= , Jonathan Corbet , References: <20260707181957.433213175@kernel.org> <20260707190253.768842729@kernel.org> From: Jinjie Ruan In-Reply-To: <20260707190253.768842729@kernel.org> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.67.109.254] X-ClientProxiedBy: kwepems100001.china.huawei.com (7.221.188.238) To dggpemf500011.china.huawei.com (7.185.36.131) On 7/8/2026 3:06 AM, Thomas Gleixner wrote: > add_random_kstack_offset() uses get/put_cpu_var() which is pointless > overhead when it is invoked from low level entry code with interrupts > disabled. > > Provide a irqsoff() variant, which avoids that. > > Signed-off-by: Thomas Gleixner > Cc: Kees Cook > --- > include/linux/randomize_kstack.h | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > --- a/include/linux/randomize_kstack.h > +++ b/include/linux/randomize_kstack.h > @@ -77,8 +77,27 @@ static __always_inline u32 get_kstack_of > } \ > } while (0) > > +/** > + * add_random_kstack_offset_irqsoff - Increase stack utilization by a random offset. > + * > + * This should be used in the syscall entry path after user registers have been > + * stored to the stack. Interrupts must be still disabled. > + */ > +#define add_random_kstack_offset_irqsoff() \ > +do { \ > + lockdep_assert_irqs_disabled(); \ > + if (static_branch_maybe(CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT, \ > + &randomize_kstack_offset)) { \ > + u32 offset = prandom_u32_state(raw_cpu_ptr(&kstack_rnd_state)); \ > + u8 *ptr = __kstack_alloca(KSTACK_OFFSET_MAX(offset)); \ > + /* Keep allocation even after "ptr" loses scope. */ \ > + asm volatile("" :: "r"(ptr) : "memory"); \ > + } \ > +} while (0) Or can we avoid these repetitions and reuse the same code? > + > #else /* CONFIG_RANDOMIZE_KSTACK_OFFSET */ > #define add_random_kstack_offset() do { } while (0) > +#define add_random_kstack_offset_irqsoff() do { } while (0) > #endif /* CONFIG_RANDOMIZE_KSTACK_OFFSET */ > > #endif >