iommu/arm-smmu-v3: Use WRITE_ONCE() when changing validity of an STE
authorWill Deacon <will@kernel.org>
Wed, 15 Jan 2020 15:21:47 +0000 (15:21 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Feb 2020 07:36:49 +0000 (08:36 +0100)
commit480494e28a5132f408bad8ef492bd4e8a4dfd0de
treee18f0cd52e3c9b2fea8c90bdff769c17ef3919e7
parent23d3f191a5762c0d73da2090e9cec6d551f5d94a
iommu/arm-smmu-v3: Use WRITE_ONCE() when changing validity of an STE

[ Upstream commit d71e01716b3606a6648df7e5646ae12c75babde4 ]

If, for some bizarre reason, the compiler decided to split up the write
of STE DWORD 0, we could end up making a partial structure valid.

Although this probably won't happen, follow the example of the
context-descriptor code and use WRITE_ONCE() to ensure atomicity of the
write.

Reported-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/iommu/arm-smmu-v3.c