]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
powerpc: Fix HMIs on big-endian with CONFIG_RELOCATABLE=y
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 8 Oct 2018 04:08:31 +0000 (15:08 +1100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Dec 2019 08:20:48 +0000 (09:20 +0100)
[ Upstream commit 505a314fb28ce122091691c51426fa85c084e115 ]

HMIs will crash the kernel due to

BRANCH_LINK_TO_FAR(hmi_exception_realmode)

Calling into the OPD instead of the actual code.

Fixes: 2337d207288f ("powerpc/64: CONFIG_RELOCATABLE support for hmi interrupts")
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
[mpe: Use DOTSYM() rather than #ifdef]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/powerpc/kernel/exceptions-64s.S

index 90af86f143a911365ecaf53b64f5d2b7fb653abd..e1dab9b1e447814b3a1c93c95f1d04be9c95c1be 100644 (file)
@@ -1123,7 +1123,7 @@ TRAMP_REAL_BEGIN(hmi_exception_early)
        EXCEPTION_PROLOG_COMMON_2(PACA_EXGEN)
        EXCEPTION_PROLOG_COMMON_3(0xe60)
        addi    r3,r1,STACK_FRAME_OVERHEAD
-       BRANCH_LINK_TO_FAR(hmi_exception_realmode) /* Function call ABI */
+       BRANCH_LINK_TO_FAR(DOTSYM(hmi_exception_realmode)) /* Function call ABI */
        cmpdi   cr0,r3,0
 
        /* Windup the stack. */