Message ID | 20250206152100.1107909-4-maz@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | KVM: arm64: Assorted vgic fixes for 6.14 | expand |
On Thu, Feb 6, 2025 at 4:21 PM Marc Zyngier <maz@kernel.org> wrote: > > Playing with racing vcpu reset and vgic teardown makes it relatively > easy to trigger a case where, by the time we try to reset a mapped > interrupt such as a timer's, the vgic is gone and there is no > interrupt to play with. > > Check for NULL upfront to avoid further embarassement. > > Reported-by: Alexander Potapenko <glider@google.com> > Signed-off-by: Marc Zyngier <maz@kernel.org> Tested-by: Alexander Potapenko <glider@google.com>
diff --git a/arch/arm64/kvm/vgic/vgic.c b/arch/arm64/kvm/vgic/vgic.c index f454cef59e24b..2ea6d1d1d3091 100644 --- a/arch/arm64/kvm/vgic/vgic.c +++ b/arch/arm64/kvm/vgic/vgic.c @@ -542,6 +542,9 @@ void kvm_vgic_reset_mapped_irq(struct kvm_vcpu *vcpu, u32 vintid) struct vgic_irq *irq = vgic_get_vcpu_irq(vcpu, vintid); unsigned long flags; + if (!irq) + return; + if (!irq->hw) goto out;
Playing with racing vcpu reset and vgic teardown makes it relatively easy to trigger a case where, by the time we try to reset a mapped interrupt such as a timer's, the vgic is gone and there is no interrupt to play with. Check for NULL upfront to avoid further embarassement. Reported-by: Alexander Potapenko <glider@google.com> Signed-off-by: Marc Zyngier <maz@kernel.org> --- arch/arm64/kvm/vgic/vgic.c | 3 +++ 1 file changed, 3 insertions(+)