mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-25 23:53:15 -04:00
KVM: SEV: Restrict userspace return codes for KVM_HC_MAP_GPA_RANGE
To align with the updated TDX api that allows userspace to request that guests retry MAP_GPA operations, make sure that userspace is only returning EINVAL or EAGAIN as possible error codes. Reviewed-by: Michael Roth <michael.roth@amd.com> Signed-off-by: Sagi Shahar <sagis@google.com> Link: https://patch.msgid.link/20260305222627.4193305-3-sagis@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
committed by
Sean Christopherson
parent
3e2dec1ede
commit
5d40e5b494
@@ -3781,9 +3781,13 @@ static int snp_rmptable_psmash(kvm_pfn_t pfn)
|
||||
|
||||
static int snp_complete_psc_msr(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
u64 hypercall_ret = READ_ONCE(vcpu->run->hypercall.ret);
|
||||
struct vcpu_svm *svm = to_svm(vcpu);
|
||||
|
||||
if (vcpu->run->hypercall.ret)
|
||||
if (!kvm_is_valid_map_gpa_range_ret(hypercall_ret))
|
||||
return -EINVAL;
|
||||
|
||||
if (hypercall_ret)
|
||||
set_ghcb_msr(svm, GHCB_MSR_PSC_RESP_ERROR);
|
||||
else
|
||||
set_ghcb_msr(svm, GHCB_MSR_PSC_RESP);
|
||||
@@ -3874,10 +3878,14 @@ static void __snp_complete_one_psc(struct vcpu_svm *svm)
|
||||
|
||||
static int snp_complete_one_psc(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
u64 hypercall_ret = READ_ONCE(vcpu->run->hypercall.ret);
|
||||
struct vcpu_svm *svm = to_svm(vcpu);
|
||||
struct psc_buffer *psc = svm->sev_es.ghcb_sa;
|
||||
|
||||
if (vcpu->run->hypercall.ret) {
|
||||
if (!kvm_is_valid_map_gpa_range_ret(hypercall_ret))
|
||||
return -EINVAL;
|
||||
|
||||
if (hypercall_ret) {
|
||||
snp_complete_psc(svm, VMGEXIT_PSC_ERROR_GENERIC);
|
||||
return 1; /* resume guest */
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user