[PATCH] KVM: arm64: Fix nested S2 MMU structures reallocation

Alexander Potapenko glider at google.com
Tue Feb 4 06:58:26 PST 2025


On Tue, Feb 4, 2025 at 3:56 PM Marc Zyngier <maz at kernel.org> wrote:
>
> For each vcpu that userspace creates, we allocate a number of
> s2_mmu structures that will eventually contain our shadow S2
> page tables.
>
> Since this is a dynamically allocated array, we reallocate
> the array and initialise the newly allocated elements. Once
> everything is correctly initialised, we adjust pointer and size
> in the kvm structure, and move on.
>
> But should that initialisation fail *and* the reallocation triggered
> a copy to another location, we end-up returning early, with the
> kvm structure still containing the (now stale) old pointer. Weeee!
>
> Cure it by assigning the pointer early, and use this to perform
> the initialisation. If everything succeeds, we adjust the size.
> Otherwise, we just leave the size as it was, no harm done, and the
> new memory is as good as the ol' one (we hope...).
>
> Fixes: 4f128f8e1aaac ("KVM: arm64: nv: Support multiple nested Stage-2 mmu structures")
> Reported-by: Alexander Potapenko <glider at google.com>
> Signed-off-by: Marc Zyngier <maz at kernel.org>
Tested-by: Alexander Potapenko <glider at google.com>



More information about the linux-arm-kernel mailing list