powerpc/kernel: Avoid memory corruption at early stage
When calling to early_setup(), we pick "boot_paca" up for the master CPU and initialize that with initialise_paca(). At that point, the SLB shadow buffer isn't populated yet. Updating the SLB shadow buffer should corrupt what we had in physical address 0 where the trap instruction is usually stored. This hasn't been observed to cause any trouble in practice, but is obviously fishy. Fixes: 6f4441ef7009 ("powerpc: Dynamically allocate slb_shadow from memblock") Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
53a448c3d5
commit
6f20e7f2e9
@ -115,6 +115,14 @@ static struct slb_shadow * __init init_slb_shadow(int cpu)
|
||||
{
|
||||
struct slb_shadow *s = &slb_shadow[cpu];
|
||||
|
||||
/*
|
||||
* When we come through here to initialise boot_paca, the slb_shadow
|
||||
* buffers are not allocated yet. That's OK, we'll get one later in
|
||||
* boot, but make sure we don't corrupt memory at 0.
|
||||
*/
|
||||
if (!slb_shadow)
|
||||
return NULL;
|
||||
|
||||
s->persistent = cpu_to_be32(SLB_NUM_BOLTED);
|
||||
s->buffer_length = cpu_to_be32(sizeof(*s));
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user