break;
case SVM_VMGEXIT_GUEST_REQUEST:
case SVM_VMGEXIT_EXT_GUEST_REQUEST:
- if (!PAGE_ALIGNED(control->exit_info_1) ||
- !PAGE_ALIGNED(control->exit_info_2) ||
- control->exit_info_1 == control->exit_info_2)
- goto vmgexit_err;
break;
default:
reason = GHCB_ERR_INVALID_EVENT;
ret = 1;
break;
case SVM_VMGEXIT_GUEST_REQUEST:
- ret = snp_handle_guest_req(svm, control->exit_info_1, control->exit_info_2);
- break;
case SVM_VMGEXIT_EXT_GUEST_REQUEST:
- ret = snp_handle_ext_guest_req(svm, control->exit_info_1, control->exit_info_2);
+ if (!PAGE_ALIGNED(control->exit_info_1) ||
+ !PAGE_ALIGNED(control->exit_info_2) ||
+ control->exit_info_1 == control->exit_info_2) {
+ svm_vmgexit_bad_input(svm, GHCB_ERR_INVALID_INPUT);
+ return 1;
+ }
+
+ if (control->exit_code == SVM_VMGEXIT_GUEST_REQUEST)
+ ret = snp_handle_guest_req(svm, control->exit_info_1,
+ control->exit_info_2);
+ else
+ ret = snp_handle_ext_guest_req(svm, control->exit_info_1,
+ control->exit_info_2);
break;
case SVM_VMGEXIT_UNSUPPORTED_EVENT:
vcpu_unimpl(vcpu,