]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
MIPS: Clear Cause.BD in instruction_pointer_set
authorJiaxun Yang <jiaxun.yang@flygoat.com>
Fri, 2 Feb 2024 12:30:27 +0000 (12:30 +0000)
committerSasha Levin <sashal@kernel.org>
Tue, 26 Mar 2024 22:21:46 +0000 (18:21 -0400)
[ Upstream commit 9d6e21ddf20293b3880ae55b9d14de91c5891c59 ]

Clear Cause.BD after we use instruction_pointer_set to override
EPC.

This can prevent exception_epc check against instruction code at
new return address.
It won't be considered as "in delay slot" after epc being overridden
anyway.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/mips/include/asm/ptrace.h

index 1e76774b36ddf28c4ce72ca0a9ed4c8655ded6c9..2849a9b65a05528decc88839424ca843966cf05b 100644 (file)
@@ -60,6 +60,7 @@ static inline void instruction_pointer_set(struct pt_regs *regs,
                                            unsigned long val)
 {
        regs->cp0_epc = val;
+       regs->cp0_cause &= ~CAUSEF_BD;
 }
 
 /* Query offset/name of register from its name/offset */