Re: [PATCH] x86/show_trace_log_lvl: ensure stack pointer is aligned, again

From: Oleg Nesterov
Date: Fri Apr 28 2023 - 02:56:25 EST


On 04/27, Josh Poimboeuf wrote:
>
> On Thu, Apr 27, 2023 at 04:00:54PM +0200, Oleg Nesterov wrote:
> > + stack = PTR_ALIGN(stack, sizeof(long));
> > for ( ; stack; stack = PTR_ALIGN(stack_info.next_sp, sizeof(long))) {
> > const char *stack_name;
>
> Seems reasonable, though 'stack' is already initialized a few lines
> above this, so it would be cleaner to do the PTR_ALIGN then. Or even
> better, just move it all to the for loop:
>
> for (stack = PTR_ALIGN(stack ? : get_stack_pointer(task, regs));
> stack;
> stack = PTR_ALIGN(stack_info.next_sp, sizeof(long))) {

We decided to make the simplest one-liner fix, but I was thinking about

for ( stack = stack ? : get_stack_pointer(task, regs);
(stack = PTR_ALIGN(stack, sizeof(long)));
stack = stack_info.next_sp)
{
...

to factout out the annoying PTR_ALIGN(). Will it work for you?

Oleg.