OSDN Git Service

powerpc/64/syscall: Zero volatile registers when returning
authorNicholas Piggin <npiggin@gmail.com>
Tue, 25 Feb 2020 17:35:35 +0000 (03:35 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 1 Apr 2020 02:42:13 +0000 (13:42 +1100)
Kernel addresses and potentially other sensitive data could be leaked
in volatile registers after a syscall.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200225173541.1549955-27-npiggin@gmail.com
arch/powerpc/kernel/entry_64.S

index 5f70830..29949bb 100644 (file)
@@ -141,6 +141,19 @@ END_FTR_SECTION_IFCLR(CPU_FTR_STCX_CHECKS_ADDRESS)
 
        cmpdi   r3,0
        bne     .Lsyscall_restore_regs
+       /* Zero volatile regs that may contain sensitive kernel data */
+       li      r0,0
+       li      r4,0
+       li      r5,0
+       li      r6,0
+       li      r7,0
+       li      r8,0
+       li      r9,0
+       li      r10,0
+       li      r11,0
+       li      r12,0
+       mtctr   r0
+       mtspr   SPRN_XER,r0
 .Lsyscall_restore_regs_cont:
 
 BEGIN_FTR_SECTION