]> git.itanic.dy.fi Git - linux-stable/commit
ARM: 9214/1: alignment: advance IT state after emulating Thumb instruction
authorArd Biesheuvel <ardb@kernel.org>
Thu, 30 Jun 2022 15:46:54 +0000 (16:46 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 21 Jul 2022 19:09:26 +0000 (21:09 +0200)
commitb1ef24a9ebdd1e98c11b2d36cb873576bc23aa30
treed62a0e9c05f0c7efd5ec93ca78ee7ec0990e4f73
parent6d80ac9402681c3f4e1c0df2a750fa5e35cc1845
ARM: 9214/1: alignment: advance IT state after emulating Thumb instruction

commit e5c46fde75e43c15a29b40e5fc5641727f97ae47 upstream.

After emulating a misaligned load or store issued in Thumb mode, we have
to advance the IT state by hand, or it will get out of sync with the
actual instruction stream, which means we'll end up applying the wrong
condition code to subsequent instructions. This might corrupt the
program state rather catastrophically.

So borrow the it_advance() helper from the probing code, and use it on
CPSR if the emulated instruction is Thumb.

Cc: <stable@vger.kernel.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/arm/include/asm/ptrace.h
arch/arm/mm/alignment.c
arch/arm/probes/decode.h