Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6327f35a authored by Shannon Zhao's avatar Shannon Zhao Committed by Marc Zyngier
Browse files

arm64: KVM: Fix guest dead loop when register accessor returns false



Currently emulate_cp will return 0 (Handled) no matter what the accessor
returns. If register accessor returns false, it will not skip current PC
while emulate_cp return handled. Then guest will stuck in a dead loop.

Reviewed-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
Signed-off-by: default avatarShannon Zhao <shannon.zhao@linaro.org>
Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
parent 7769db90
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -1007,11 +1007,10 @@ static int emulate_cp(struct kvm_vcpu *vcpu,
		if (likely(r->access(vcpu, params, r))) {
			/* Skip instruction, since it was emulated */
			kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu));
		}

			/* Handled */
			return 0;
		}
	}

	/* Not handled */
	return -1;