> + > +static void test_sev_launch(void *guest_code, uint32_t type, uint64_t policy) > +{ > + struct kvm_vcpu *vcpu; > + struct kvm_vm *vm; > + struct ucall uc; > + bool cond; > + int ret; > + > + vm = vm_sev_create_with_one_vcpu(type, guest_code, &vcpu); > + ret = sev_vm_launch_start(vm, 0); > + cond = type == KVM_X86_SEV_VM ? !ret : ret; > + TEST_ASSERT(cond, > + "KVM_SEV_LAUNCH_START should fail, invalid policy."); > + > + ret = sev_vm_launch_update(vm, policy); > + cond = type == KVM_X86_SEV_VM ? !ret : ret; > + TEST_ASSERT(cond, > + "KVM_SEV_LAUNCH_UPDATE should fail, invalid policy."); Isn't the reason we expect all other calls to fail here because we have not successfully called `sev_vm_launch_start()`? > + sev_guest_status_assert(vm, type); > + > + ret = sev_vm_launch_measure(vm, alloca(256)); Should we free this buffer?