From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from canpmsgout10.his.huawei.com (canpmsgout10.his.huawei.com [113.46.200.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6923731E822; Thu, 9 Jul 2026 02:13:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=113.46.200.225 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783563202; cv=none; b=muvDXHG3IbqV1kRyZT1RwMOMoww0kvr8XIvByUdf6za+2eHsznJ9QXOg4EKirDZ0zpEFpZ0kVCHICbYEieSQaZcdipqVDUQrykHXNqXTqS9GHAzhrcWv4luO4Z7EHh1TnxXE8JYYr1GWrVoEDdERvod9Ds8v15/n7PTOuTzTN6o= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783563202; c=relaxed/simple; bh=SOuxBEMe6Snhg5If1hoAhWP9tSzyKmHrj1lSJoOW4xI=; h=Message-ID:Date:MIME-Version:Subject:To:CC:References:From: In-Reply-To:Content-Type; b=g8v0o7m3bSU0thA+rDo2FfTbxIFkuCeKkzhabX5YLFXZ8qj2xc/yk8GFd5QAMKdYFnM8XVzur1MX/Bo/J/7ayL01oZvZfCqE3dp3A0WabtQErtEKpgLz2NkMJdzaUhUS+syOBxLWndbVpWyzMtj46jqjiM9bAprRY9j5WxETgmQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=huawei.com; dkim=pass (1024-bit key) header.d=huawei.com header.i=@huawei.com header.b=2rmhw3tA; arc=none smtp.client-ip=113.46.200.225 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huawei.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=huawei.com header.i=@huawei.com header.b="2rmhw3tA" 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 Precedence: bulk X-Mailing-List: linux-doc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: 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-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 >