aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/embedded6xx
diff options
context:
space:
mode:
authorQian Cai <cai@lca.pw>2020-03-05 23:48:52 -0500
committerMichael Ellerman <mpe@ellerman.id.au>2020-05-20 23:39:56 +1000
commitc2e929b18cea6cbf71364f22d742d9aad7f4677a (patch)
treef460c5ce1325b50f0c7d24d052f60e48bfc49329 /arch/powerpc/platforms/embedded6xx
parentpowerpc/64s: Fix early_init_mmu section mismatch (diff)
downloadlinux-dev-c2e929b18cea6cbf71364f22d742d9aad7f4677a.tar.xz
linux-dev-c2e929b18cea6cbf71364f22d742d9aad7f4677a.zip
powerpc/64s/pgtable: fix an undefined behaviour
Booting a power9 server with hash MMU could trigger an undefined behaviour because pud_offset(p4d, 0) will do, 0 >> (PAGE_SHIFT:16 + PTE_INDEX_SIZE:8 + H_PMD_INDEX_SIZE:10) Fix it by converting pud_index() and friends to static inline functions. UBSAN: shift-out-of-bounds in arch/powerpc/mm/ptdump/ptdump.c:282:15 shift exponent 34 is too large for 32-bit type 'int' CPU: 6 PID: 1 Comm: swapper/0 Not tainted 5.6.0-rc4-next-20200303+ #13 Call Trace: dump_stack+0xf4/0x164 (unreliable) ubsan_epilogue+0x18/0x78 __ubsan_handle_shift_out_of_bounds+0x160/0x21c walk_pagetables+0x2cc/0x700 walk_pud at arch/powerpc/mm/ptdump/ptdump.c:282 (inlined by) walk_pagetables at arch/powerpc/mm/ptdump/ptdump.c:311 ptdump_check_wx+0x8c/0xf0 mark_rodata_ro+0x48/0x80 kernel_init+0x74/0x194 ret_from_kernel_thread+0x5c/0x74 Suggested-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Qian Cai <cai@lca.pw> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Reviewed-by: Christophe Leroy <christophe.leroy@c-s.fr> Link: https://lore.kernel.org/r/20200306044852.3236-1-cai@lca.pw
Diffstat (limited to 'arch/powerpc/platforms/embedded6xx')
0 files changed, 0 insertions, 0 deletions