powerpc: Don't use CURRENT_THREAD_INFO to find the stack
authorChristophe Leroy <christophe.leroy@c-s.fr>
Thu, 17 Jan 2019 12:23:57 +0000 (23:23 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Sat, 23 Feb 2019 11:31:40 +0000 (22:31 +1100)
A few places use CURRENT_THREAD_INFO, or the C version, to find the
stack. This will no longer work with THREAD_INFO_IN_TASK so change
them to find the stack in other ways.

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
[mpe: Split out of larger patch]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/entry_64.S
arch/powerpc/kernel/irq.c
arch/powerpc/kernel/misc_32.S

index c17c1bed6148d87767217008cce54a1de2127d9b..21f1cb4d464e99f19eb82067783a4e373b1fa7d3 100644 (file)
@@ -689,7 +689,7 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S)
 2:
 #endif /* CONFIG_PPC_BOOK3S_64 */
 
-       CURRENT_THREAD_INFO(r7, r8)  /* base of new stack */
+       clrrdi  r7, r8, THREAD_SHIFT    /* base of new stack */
        /* Note: this uses SWITCH_FRAME_SIZE rather than INT_FRAME_SIZE
           because we don't need to leave the 288-byte ABI gap at the
           top of the kernel stack. */
index 4a5dd8800946d844fedceca4406f7201a02f71da..531e9ef153c09778122a72d620e4baf8d33b756c 100644 (file)
@@ -663,7 +663,7 @@ void do_IRQ(struct pt_regs *regs)
        struct thread_info *curtp, *irqtp, *sirqtp;
 
        /* Switch to the irq stack to handle this */
-       curtp = current_thread_info();
+       curtp = (void *)(current_stack_pointer() & ~(THREAD_SIZE - 1));
        irqtp = hardirq_ctx[raw_smp_processor_id()];
        sirqtp = softirq_ctx[raw_smp_processor_id()];
 
index 242f0c88010ec96be11b0ca43cd562323c9830d3..b37b50fde828642b95359d4fdf4f04dc94210fa9 100644 (file)
@@ -603,7 +603,7 @@ EXPORT_SYMBOL(__bswapdi2)
 #ifdef CONFIG_SMP
 _GLOBAL(start_secondary_resume)
        /* Reset stack */
-       CURRENT_THREAD_INFO(r1, r1)
+       rlwinm  r1, r1, 0, 0, 31 - THREAD_SHIFT
        addi    r1,r1,THREAD_SIZE-STACK_FRAME_OVERHEAD
        li      r3,0
        stw     r3,0(r1)                /* Zero the stack frame pointer */