powerpc/64s: Blacklist rtas entry/exit from kprobes
authorNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Thu, 29 Jun 2017 17:49:20 +0000 (23:19 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 3 Jul 2017 13:12:02 +0000 (23:12 +1000)
We can't take traps with relocation off, so blacklist enter_rtas() and
rtas_return_loc(). However, instead of blacklisting all of enter_rtas(),
introduce a new symbol __enter_rtas from where on we can't take a trap
and blacklist that.

Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/entry_64.S

index d5be463b2fa451f52137c36e28552145c3d60bc0..49d8422767b4de686ec0ee64fbf69ac415f05003 100644 (file)
@@ -1091,6 +1091,8 @@ _GLOBAL(enter_rtas)
         rldicr  r9,r9,MSR_SF_LG,(63-MSR_SF_LG)
        ori     r9,r9,MSR_IR|MSR_DR|MSR_FE0|MSR_FE1|MSR_FP|MSR_RI|MSR_LE
        andc    r6,r0,r9
+
+__enter_rtas:
        sync                            /* disable interrupts so SRR0/1 */
        mtmsrd  r0                      /* don't get trashed */
 
@@ -1127,6 +1129,8 @@ rtas_return_loc:
        mtspr   SPRN_SRR1,r4
        rfid
        b       .       /* prevent speculative execution */
+_ASM_NOKPROBE_SYMBOL(__enter_rtas)
+_ASM_NOKPROBE_SYMBOL(rtas_return_loc)
 
        .align  3
 1:     .llong  rtas_restore_regs