Skip to content

Commit

Permalink
arm64: KVM: Fix host crash when injecting a fault into a 32bit guest
Browse files Browse the repository at this point in the history
When injecting a fault into a misbehaving 32bit guest, it seems
rather idiotic to also inject a 64bit fault that is only going
to corrupt the guest state. This leads to a situation where we
perform an illegal exception return at EL2 causing the host
to crash instead of killing the guest.

Just fix the stupid bug that has been there from day 1.

Cc: <[email protected]>
Reported-by: Russell King <[email protected]>
Tested-by: Russell King <[email protected]>
Signed-off-by: Marc Zyngier <[email protected]>
Signed-off-by: Will Deacon <[email protected]>
  • Loading branch information
Marc Zyngier authored and wildea01 committed Aug 27, 2015
1 parent c13dcf9 commit 126c69a
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions arch/arm64/kvm/inject_fault.c
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,8 @@ void kvm_inject_dabt(struct kvm_vcpu *vcpu, unsigned long addr)
{
if (!(vcpu->arch.hcr_el2 & HCR_RW))
inject_abt32(vcpu, false, addr);

inject_abt64(vcpu, false, addr);
else
inject_abt64(vcpu, false, addr);
}

/**
Expand All @@ -184,8 +184,8 @@ void kvm_inject_pabt(struct kvm_vcpu *vcpu, unsigned long addr)
{
if (!(vcpu->arch.hcr_el2 & HCR_RW))
inject_abt32(vcpu, true, addr);

inject_abt64(vcpu, true, addr);
else
inject_abt64(vcpu, true, addr);
}

/**
Expand All @@ -198,6 +198,6 @@ void kvm_inject_undefined(struct kvm_vcpu *vcpu)
{
if (!(vcpu->arch.hcr_el2 & HCR_RW))
inject_undef32(vcpu);

inject_undef64(vcpu);
else
inject_undef64(vcpu);
}

0 comments on commit 126c69a

Please sign in to comment.