From: Ryan Roberts <ryan.roberts@arm.com>
To: Dave Hansen <dave.hansen@intel.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
Huacai Chen <chenhuacai@kernel.org>,
Madhavan Srinivasan <maddy@linux.ibm.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Paul Walmsley <pjw@kernel.org>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Alexander Gordeev <agordeev@linux.ibm.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
Kees Cook <kees@kernel.org>,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
Arnd Bergmann <arnd@arndb.de>,
Mark Rutland <mark.rutland@arm.com>,
"Jason A. Donenfeld" <Jason@zx2c4.com>,
Ard Biesheuvel <ardb@kernel.org>,
Jeremy Linton <jeremy.linton@arm.com>,
David Laight <david.laight.linux@gmail.com>
Cc: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev,
linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org,
linux-s390@vger.kernel.org, linux-hardening@vger.kernel.org,
stable@vger.kernel.org
Subject: Re: [PATCH v4 1/3] randomize_kstack: Maintain kstack_offset per task
Date: Mon, 19 Jan 2026 16:51:32 +0000 [thread overview]
Message-ID: <31187502-2a11-4ef3-82b4-927a271d8b44@arm.com> (raw)
In-Reply-To: <85d0d013-eca2-4b9f-bee3-d583d0eeb99e@intel.com>
Thanks for the review!
On 19/01/2026 16:10, Dave Hansen wrote:
> On 1/19/26 05:01, Ryan Roberts wrote:
> ...
>> Cc: stable@vger.kernel.org
>
> Since this doesn't fix any known functional issues, if it were me, I'd
> leave stable@ alone. It isn't clear that this is stable material.
I listed 2 issues in the commit log; I agree that issue 1 falls into the
category of "don't really care", but issue 2 means that kstack randomization is
currently trivial to defeat. That's the reason I thought it would valuable in
stable.
But if you're saying don't bother and others agree, then this whole patch can be
dropped; this is just intended to be the backportable fix. Patch 3 reimplements
this entirely for upstream.
I'll wait and see if others have opinions if that's ok?
>
>> --- a/include/linux/sched.h
>> +++ b/include/linux/sched.h
>> @@ -1591,6 +1591,10 @@ struct task_struct {
>> unsigned long prev_lowest_stack;
>> #endif
>>
>> +#ifdef CONFIG_RANDOMIZE_KSTACK_OFFSET
>> + u32 kstack_offset;
>> +#endif
>> +
>> #ifdef CONFIG_X86_MCE
>> void __user *mce_vaddr;
>
> Nit: This seems to be throwing a u32 potentially in between a couple of
> void*/ulong sized objects.
Yeah, I spent a bit of time with pahole but eventually concluded that it was
difficult to find somewhere to nestle it that would work reliably cross arch.
Eventually I just decided to group it with other stack meta data.
>
> It probably doesn't matter with struct randomization and it's really
> hard to get right among the web of task_struct #ifdefs. But, it would be
> nice to at _least_ nestle this next to another int-sized thing.
>
> Does it really even need to be 32 bits? x86 has this comment:
>
>> /*
>> * This value will get limited by KSTACK_OFFSET_MAX(), which is 10
>> * bits. The actual entropy will be further reduced by the compiler
>> * when applying stack alignment constraints (see cc_stack_align4/8 in
>> * arch/x86/Makefile), which will remove the 3 (x86_64) or 2 (ia32)
>> * low bits from any entropy chosen here.
>> *
>> * Therefore, final stack offset entropy will be 7 (x86_64) or
>> * 8 (ia32) bits.
>> */
For more recent kernels it's 6 bits shifted by 4 for 64-bit kernels or 8 bits
shifted by 2 for 32-bit kernels regardless of arch. So could probably make it
work with 8 bits of storage. Although I was deliberately trying to keep the
change simple, since it was intended for backporting. Patch 3 rips it out.
Overall I'd prefer to leave it all as is. But if people don't think we should
backport, then let's just drop the whole patch.
Thanks,
Ryan
next prev parent reply other threads:[~2026-01-19 16:52 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-19 13:01 [PATCH v4 0/3] Fix bugs and performance of kstack offset randomisation Ryan Roberts
2026-01-19 13:01 ` [PATCH v4 1/3] randomize_kstack: Maintain kstack_offset per task Ryan Roberts
2026-01-19 16:10 ` Dave Hansen
2026-01-19 16:51 ` Ryan Roberts [this message]
2026-01-19 16:53 ` Dave Hansen
2026-01-19 13:01 ` [PATCH v4 2/3] prandom: Add __always_inline version of prandom_u32_state() Ryan Roberts
2026-01-28 17:00 ` Jason A. Donenfeld
2026-01-28 17:33 ` Ryan Roberts
2026-01-28 18:32 ` David Laight
2026-01-30 16:16 ` Christophe Leroy (CS GROUP)
2026-01-19 13:01 ` [PATCH v4 3/3] randomize_kstack: Unify random source across arches Ryan Roberts
2026-01-20 23:50 ` kernel test robot
2026-01-21 10:20 ` David Laight
2026-01-21 14:48 ` David Laight
2026-01-21 10:52 ` Ryan Roberts
2026-01-21 12:32 ` Mark Rutland
2026-02-18 15:20 ` Ryan Roberts
2026-02-22 21:34 ` Thomas Gleixner
2026-02-23 9:41 ` David Laight
2026-03-03 14:43 ` Ryan Roberts
2026-01-19 16:00 ` [PATCH v4 0/3] Fix bugs and performance of kstack offset randomisation Dave Hansen
2026-01-19 16:44 ` Kees Cook
2026-01-19 16:51 ` Dave Hansen
2026-01-20 16:32 ` Ryan Roberts
2026-01-20 16:37 ` Dave Hansen
2026-01-20 16:45 ` Ryan Roberts
2026-01-20 18:45 ` David Laight
2026-01-19 16:25 ` Heiko Carstens
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=31187502-2a11-4ef3-82b4-927a271d8b44@arm.com \
--to=ryan.roberts@arm.com \
--cc=Jason@zx2c4.com \
--cc=agordeev@linux.ibm.com \
--cc=aou@eecs.berkeley.edu \
--cc=ardb@kernel.org \
--cc=arnd@arndb.de \
--cc=bp@alien8.de \
--cc=catalin.marinas@arm.com \
--cc=chenhuacai@kernel.org \
--cc=dave.hansen@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=david.laight.linux@gmail.com \
--cc=gor@linux.ibm.com \
--cc=gustavoars@kernel.org \
--cc=hca@linux.ibm.com \
--cc=jeremy.linton@arm.com \
--cc=kees@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-s390@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=loongarch@lists.linux.dev \
--cc=maddy@linux.ibm.com \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=mpe@ellerman.id.au \
--cc=palmer@dabbelt.com \
--cc=pjw@kernel.org \
--cc=stable@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=will@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox