On Tue, 10 Sep 2024 10:47:46 +0100, Will Deacon will@kernel.org wrote:
On Tue, Sep 10, 2024 at 10:08:49AM +0100, Marc Zyngier wrote:
On Tue, 10 Sep 2024 09:50:16 +0100, Anastasia Belova abelova@astralinux.ru wrote:
Add explicit casting to prevent expantion of 32th bit of u32 into highest half of u64 in several places.
For example, in inject_abt64: ESR_ELx_EC_DABT_LOW << ESR_ELx_EC_SHIFT = 0x24 << 26. This operation's result is int with 1 in 32th bit. While casting this value into u64 (esr is u64) 1 fills 32 highest bits.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Fixes: aa8eff9bfbd5 ("arm64: KVM: fault injection into a guest") Signed-off-by: Anastasia Belova abelova@astralinux.ru
nit: the subject line is misleading, as this doesn't only affect KVM, but the whole of the arm64 port (the exception classes form a generic architectural construct).
Weird, this v2 landed in my spam for some reason.
This also probably deserve a Cc stable.
Will, Catalin: I'm happy to queue this in the KVM tree, but if you are taking it directly:
Acked-by: Marc Zyngier maz@kernel.org
I can take it via arm64. I assume it's ok to land in v6.12 (with the cc: stable), or is there an urgency to landing this in v6.11? It looks it was found using verification tools, rather than because of an actual issue affecting users.
Yup, 6.12 is just fine. It would only affect ESR encodings that have an ISS2 in the top 32 bits, and that's only a very small number of features, most of which don't exist in HW yet.
Thanks,
M.