• Ricardo Koller's avatar
    KVM: arm64: vgic-v3: Check redist region is not above the VM IPA size · 4612d98f
    Ricardo Koller authored
    Verify that the redistributor regions do not extend beyond the
    VM-specified IPA range (phys_size). This can happen when using
    KVM_VGIC_V3_ADDR_TYPE_REDIST or KVM_VGIC_V3_ADDR_TYPE_REDIST_REGIONS
    with:
    
      base + size > phys_size AND base < phys_size
    
    Add the missing check into vgic_v3_alloc_redist_region() which is called
    when setting the regions, and into vgic_v3_check_base() which is called
    when attempting the first vcpu-run. The vcpu-run check does not apply to
    KVM_VGIC_V3_ADDR_TYPE_REDIST_REGIONS because the regions size is known
    before the first vcpu-run. Note that using the REDIST_REGIONS API
    results in a different check, which already exists, at first vcpu run:
    that the number of redist regions is enough for all vcpus.
    
    Finally, this patch also enables some extra tests in
    vgic_v3_alloc_redist_region() by calculating "size" early for the legacy
    redist api: like checking that the REDIST region can fit all the already
    created vcpus.
    Reviewed-by: default avatarEric Auger <eric.auger@redhat.com>
    Signed-off-by: default avatarRicardo Koller <ricarkol@google.com>
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20211005011921.437353-3-ricarkol@google.com
    4612d98f
vgic-v3.c 18.6 KB