Skip to content

Commit 5bb60ea

Browse files
chleroympe
authored andcommitted
powerpc/32: Fix hardlockup on vmap stack overflow
Since the commit c118c73 ("powerpc/32: Fix vmap stack - Do not activate MMU before reading task struct") a vmap stack overflow results in a hard lockup. This is because emergency_ctx is still addressed with its virtual address allthough data MMU is not active anymore at that time. Fix it by using a physical address instead. Fixes: c118c73 ("powerpc/32: Fix vmap stack - Do not activate MMU before reading task struct") Cc: [email protected] # v5.10+ Signed-off-by: Christophe Leroy <[email protected]> Signed-off-by: Michael Ellerman <[email protected]> Link: https://lore.kernel.org/r/ce30364fb7ccda489272af4a1612b6aa147e1d23.1637227521.git.christophe.leroy@csgroup.eu
1 parent cf0b0e3 commit 5bb60ea

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

arch/powerpc/kernel/head_32.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,11 +202,11 @@ _ASM_NOKPROBE_SYMBOL(\name\()_virt)
202202
mfspr r1, SPRN_SPRG_THREAD
203203
lwz r1, TASK_CPU - THREAD(r1)
204204
slwi r1, r1, 3
205-
addis r1, r1, emergency_ctx@ha
205+
addis r1, r1, emergency_ctx-PAGE_OFFSET@ha
206206
#else
207-
lis r1, emergency_ctx@ha
207+
lis r1, emergency_ctx-PAGE_OFFSET@ha
208208
#endif
209-
lwz r1, emergency_ctx@l(r1)
209+
lwz r1, emergency_ctx-PAGE_OFFSET@l(r1)
210210
addi r1, r1, THREAD_SIZE - INT_FRAME_SIZE
211211
EXCEPTION_PROLOG_2 0 vmap_stack_overflow
212212
prepare_transfer_to_handler

0 commit comments

Comments
 (0)