On Sat, Jul 26, 2025 at 02:06:46PM -0700, Kees Cook wrote: > Add missing const qualifier to the non-CONFIG_THREAD_INFO_IN_TASK > version of end_of_stack() to match the CONFIG_THREAD_INFO_IN_TASK > version. Fixes a warning with CONFIG_KSTACK_ERASE=y on archs that don't > select THREAD_INFO_IN_TASK (such as LoongArch): > > error: passing 'const struct task_struct *' to parameter of type 'struct > task_struct *' discards qualifiers > > The stackleak_task_low_bound() function correctly uses a const task > parameter, but the legacy end_of_stack() prototype didn't like that. > > Build tested on loongarch (with CONFIG_KSTACK_ERASE=y) and m68k > (with CONFIG_DEBUG_STACK_USAGE=y). > > Fixes: a45728fd4120 ("LoongArch: Enable HAVE_ARCH_STACKLEAK") > Reported-by: Nathan Chancellor <nat...@kernel.org> > Closes: https://lore.kernel.org/all/20250726004313.GA3650901@ax162 > Cc: Youling Tang <tangyoul...@kylinos.cn> > Cc: Huacai Chen <chenhua...@loongson.cn> > Signed-off-by: Kees Cook <k...@kernel.org>
Tested-by: Nathan Chancellor <nat...@kernel.org> > --- > include/linux/sched/task_stack.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/linux/sched/task_stack.h > b/include/linux/sched/task_stack.h > index 85c5a6392e02..1fab7e9043a3 100644 > --- a/include/linux/sched/task_stack.h > +++ b/include/linux/sched/task_stack.h > @@ -53,7 +53,7 @@ static inline void setup_thread_stack(struct task_struct > *p, struct task_struct > * When the stack grows up, this is the highest address. > * Beyond that position, we corrupt data on the next page. > */ > -static inline unsigned long *end_of_stack(struct task_struct *p) > +static inline unsigned long *end_of_stack(const struct task_struct *p) > { > #ifdef CONFIG_STACK_GROWSUP > return (unsigned long *)((unsigned long)task_thread_info(p) + > THREAD_SIZE) - 1; > -- > 2.34.1 >