Here's an incremental fix that can be folded into the patch.

Segher Boessenkool's on February 26, 2020 7:20 am:
> Hi!
> 
> On Wed, Feb 26, 2020 at 03:35:35AM +1000, Nicholas Piggin wrote:
>> Kernel addresses and potentially other sensitive data could be leaked
>> in volatile registers after a syscall.
> 
>>      cmpdi   r3,0
>>      bne     .Lsyscall_restore_regs
>> +    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:
> 
> What about LR?  Is that taken care of later?
> 
> This also deserves a big fat comment imo, it is very important after
> all, and not so obvious.
> 
> 
> Segher
> 

Signed-off-by: Nicholas Piggin <npig...@gmail.com>
---
 arch/powerpc/kernel/entry_64.S | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index 0e2c56573a41..ea534375250b 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -135,6 +135,7 @@ 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
-- 
2.23.0

Reply via email to