|
@@ -14,6 +14,8 @@
|
|
#include <linux/irqchip/arm-gic.h>
|
|
#include <linux/irqchip/arm-gic.h>
|
|
#include <linux/kvm.h>
|
|
#include <linux/kvm.h>
|
|
#include <linux/kvm_host.h>
|
|
#include <linux/kvm_host.h>
|
|
|
|
+#include <linux/nospec.h>
|
|
|
|
+
|
|
#include <kvm/iodev.h>
|
|
#include <kvm/iodev.h>
|
|
#include <kvm/arm_vgic.h>
|
|
#include <kvm/arm_vgic.h>
|
|
|
|
|
|
@@ -324,6 +326,9 @@ static unsigned long vgic_mmio_read_apr(struct kvm_vcpu *vcpu,
|
|
|
|
|
|
if (n > vgic_v3_max_apr_idx(vcpu))
|
|
if (n > vgic_v3_max_apr_idx(vcpu))
|
|
return 0;
|
|
return 0;
|
|
|
|
+
|
|
|
|
+ n = array_index_nospec(n, 4);
|
|
|
|
+
|
|
/* GICv3 only uses ICH_AP1Rn for memory mapped (GICv2) guests */
|
|
/* GICv3 only uses ICH_AP1Rn for memory mapped (GICv2) guests */
|
|
return vgicv3->vgic_ap1r[n];
|
|
return vgicv3->vgic_ap1r[n];
|
|
}
|
|
}
|