[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200902184935.GA5875@C02TD0UTHF1T.local>
Date: Wed, 2 Sep 2020 19:50:27 +0100
From: Mark Rutland <mark.rutland@....com>
To: Miroslav Benes <mbenes@...e.cz>, Mark Brown <broonie@...nel.org>
Cc: Catalin Marinas <catalin.marinas@....com>,
Will Deacon <will@...nel.org>,
Vasily Gorbik <gor@...ux.ibm.com>,
Heiko Carstens <hca@...ux.ibm.com>,
Borislav Petkov <bp@...en8.de>,
Thomas Gleixner <tglx@...utronix.de>,
"H. Peter Anvin" <hpa@...or.com>,
Christian Borntraeger <borntraeger@...ibm.com>,
Ingo Molnar <mingo@...nel.org>,
Jiri Slaby <jirislaby@...nel.org>, x86@...nel.org,
linux-arm-kernel@...ts.infradead.org, linux-s390@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 3/3] arm64: stacktrace: Convert to ARCH_STACKWALK
On Wed, Sep 02, 2020 at 11:32:13AM +0200, Miroslav Benes wrote:
> Hi,
>
> it could be a silly question, but better to ask...
>
> > + if (regs)
> > + start_backtrace(&frame, regs->regs[29], regs->pc);
> > + else
> > + start_backtrace(&frame, thread_saved_fp(task),
> > + thread_saved_pc(task));
>
> Would this also work for task == current? Given that the original code had
>
> > - start_backtrace(&frame,
> > - (unsigned long)__builtin_frame_address(0),
> > - (unsigned long)__save_stack_trace);
Oh whoops; I'm annoyed I didn't spot that.
With that gone this cannot work for (task == current && regs == NULL), as
we'll erroneously use stale values from the task struct.
It looks like the LKDTM tests only trigger cases with non-NULL regs, but
IIUC this should show up with show_stack(NULL, NULL, KERN_INFO), as
drivers/tty/sysrq.c does for other cpus.
Thanks,
Mark.
Powered by blists - more mailing lists