summaryrefslogtreecommitdiff
path: root/arch/powerpc/kernel
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2018-05-21 17:44:57 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-06-06 16:44:32 +0200
commitb27fb13e93b0b41d56706c1a577759ab69d80a3f (patch)
tree611efbb758d6194e307653b4a4d4163cecd34639 /arch/powerpc/kernel
parent2460c23c35e9a612395b4108dbc19f3c1f016d43 (diff)
downloadlinux-b27fb13e93b0b41d56706c1a577759ab69d80a3f.tar.gz
linux-b27fb13e93b0b41d56706c1a577759ab69d80a3f.tar.bz2
linux-b27fb13e93b0b41d56706c1a577759ab69d80a3f.zip
arm64: lse: Add early clobbers to some input/output asm operands
commit 32c3fa7cdf0c4a3eb8405fc3e13398de019e828b upstream. For LSE atomics that read and write a register operand, we need to ensure that these operands are annotated as "early clobber" if the register is written before all of the input operands have been consumed. Failure to do so can result in the compiler allocating the same register to both operands, leading to splats such as: Unable to handle kernel paging request at virtual address 11111122222221 [...] x1 : 1111111122222222 x0 : 1111111122222221 Process swapper/0 (pid: 1, stack limit = 0x000000008209f908) Call trace: test_atomic64+0x1360/0x155c where x0 has been allocated as both the value to be stored and also the atomic_t pointer. This patch adds the missing clobbers. Cc: <stable@vger.kernel.org> Cc: Dave Martin <dave.martin@arm.com> Cc: Robin Murphy <robin.murphy@arm.com> Reported-by: Mark Salter <msalter@redhat.com> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/powerpc/kernel')
0 files changed, 0 insertions, 0 deletions