powerpc/8xx: fix handling of early NULL pointer dereference
authorChristophe Leroy <christophe.leroy@c-s.fr>
Fri, 13 Jul 2018 13:10:47 +0000 (13:10 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 19 Jul 2018 04:38:45 +0000 (14:38 +1000)
NULL pointers are pointers to user memory space. So user pagetable
has to be set in order to avoid random behaviour in case of NULL
pointer dereference, otherwise we may encounter random memory
access hence Machine Check Exception from TLB Miss handlers.

Set user pagetable as early as possible in order to properly
catch early kernel NULL pointer dereference.

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/head_8xx.S

index 6cab07e76732745854687de3a4d8a8fcb6f9e15e..04501b65040ed7b13bdb0f7745c999ef44735f88 100644 (file)
@@ -873,6 +873,10 @@ start_here:
        li      r0,0
        stwu    r0,THREAD_SIZE-STACK_FRAME_OVERHEAD(r1)
 
+       lis     r6, swapper_pg_dir@ha
+       tophys(r6,r6)
+       mtspr   SPRN_M_TW, r6
+
        bl      early_init      /* We have to do this with MMU on */
 
 /*
@@ -893,9 +897,6 @@ start_here:
         * init's THREAD like the context switch code does, but this is
         * easier......until someone changes init's static structures.
         */
-       lis     r6, swapper_pg_dir@ha
-       tophys(r6,r6)
-       mtspr   SPRN_M_TW, r6
        lis     r4,2f@h
        ori     r4,r4,2f@l
        tophys(r4,r4)