On 1/19/26 05:01, Ryan Roberts wrote:
...
> Cc: [email protected]
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.
> --- 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.
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.
> */