ARM: 9464/1: fix input-only operand modification in load_unaligned_zeropad()
authorLiyuan Pang <pangliyuan1@huawei.com>
Tue, 9 Dec 2025 02:19:45 +0000 (03:19 +0100)
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tue, 9 Dec 2025 09:18:53 +0000 (09:18 +0000)
commitedb924a7211c9aa7a4a415e03caee4d875e46b8e
tree7874c72090d1c575d2bee2ddc11d74f0ce93f3d3
parent3a8660878839faadb4f1a6dd72c3179c1df56787
ARM: 9464/1: fix input-only operand modification in load_unaligned_zeropad()

In the inline assembly inside load_unaligned_zeropad(), the "addr" is
constrained as input-only operand. The compiler assumes that on exit
from the asm statement these operands contain the same values as they
had before executing the statement, but when kernel page fault happened, the assembly fixup code "bic %2 %2, #0x3" modify the value of "addr", which may lead to an unexpected behavior.

Use a temporary variable "tmp" to handle it, instead of modifying the
input-only operand, just like what arm64's load_unaligned_zeropad()
does.

Fixes: b9a50f74905a ("ARM: 7450/1: dcache: select DCACHE_WORD_ACCESS for little-endian ARMv6+ CPUs")
Co-developed-by: Xie Yuanbin <xieyuanbin1@huawei.com>
Signed-off-by: Xie Yuanbin <xieyuanbin1@huawei.com>
Signed-off-by: Liyuan Pang <pangliyuan1@huawei.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
arch/arm/include/asm/word-at-a-time.h