| From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| Date: Tue, 26 Mar 2019 18:31:29 +0100 |
| Subject: [PATCH ] powerpc/stackprotector: work around stack-guard init from |
| atomic |
| |
| This is invoked from the secondary CPU in atomic context. On x86 we use |
| tsc instead. On Power we XOR it against mftb() so lets use stack address |
| as the initial value. |
| |
| Cc: stable-rt@vger.kernel.org |
| Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| --- |
| arch/powerpc/include/asm/stackprotector.h | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| --- a/arch/powerpc/include/asm/stackprotector.h |
| +++ b/arch/powerpc/include/asm/stackprotector.h |
| @@ -24,7 +24,11 @@ static __always_inline void boot_init_st |
| unsigned long canary; |
| |
| /* Try to get a semi random initial value. */ |
| +#ifdef CONFIG_PREEMPT_RT |
| + canary = (unsigned long)&canary; |
| +#else |
| canary = get_random_canary(); |
| +#endif |
| canary ^= mftb(); |
| canary ^= LINUX_VERSION_CODE; |
| canary &= CANARY_MASK; |