mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
xen/arm: vgic-v2: Don't crash the hypervisor if the SGI target mode is invalid
The GICv2 spec reserved the value 0b11 for GICD_SGIR.TargetListFilter.
Even if it's an invalid value, a malicious guest could write this value
and threfore crash the hypervisor.
Replace the BUG() by logging the error and inject a data abort to the guest.
This was introduced by commit ea37fd2111
"xen/arm: split vgic driver into generic and vgic-v2 driver".
This is CVE-2015-0268 / XSA-117.
Signed-off-by: Julien Grall <julien.grall@linaro.org>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
This commit is contained in:
1 parent
4f3d3612e6
commit
97c4e77538
1 file changed
+4
-1
@@ -257,7 +257,10 @@ static int vgic_v2_to_sgi(struct vcpu *v, register_t sgir)
|
||||
sgi_mode = SGI_TARGET_SELF;
|
||||
break;
|
||||
default:
|
||||
BUG();
|
||||
printk(XENLOG_G_DEBUG
|
||||
"%pv: vGICD: unhandled GICD_SGIR write %"PRIregister" with wrong mode\n",
|
||||
v, sgir);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return vgic_to_sgi(v, sgir, sgi_mode, virq, vcpu_mask);
|
||||
|
||||