On Tue, Aug 18, 2020 at 02:15:31PM -0700, Aaron Lewis wrote: > Ensure the out value 'uc' in get_ucall() is properly reporting > UCALL_NONE if the call fails. The return value will be correctly > reported, however, the out parameter 'uc' will not be. Clear the struct > to ensure the correct value is being reported in the out parameter. > > Signed-off-by: Aaron Lewis <aaronlewis@xxxxxxxxxx> > --- > > v2 -> v3 > > - This commit is new to the series. This was added to have the ucall changes > separate from the exception handling changes and the addition of the test. > - Added support on aarch64 and s390x as well. > > --- > tools/testing/selftests/kvm/lib/aarch64/ucall.c | 3 +++ > tools/testing/selftests/kvm/lib/s390x/ucall.c | 3 +++ > tools/testing/selftests/kvm/lib/x86_64/ucall.c | 3 +++ > 3 files changed, 9 insertions(+) > > diff --git a/tools/testing/selftests/kvm/lib/aarch64/ucall.c b/tools/testing/selftests/kvm/lib/aarch64/ucall.c > index c8e0ec20d3bf..2f37b90ee1a9 100644 > --- a/tools/testing/selftests/kvm/lib/aarch64/ucall.c > +++ b/tools/testing/selftests/kvm/lib/aarch64/ucall.c > @@ -94,6 +94,9 @@ uint64_t get_ucall(struct kvm_vm *vm, uint32_t vcpu_id, struct ucall *uc) > struct kvm_run *run = vcpu_state(vm, vcpu_id); > struct ucall ucall = {}; > > + if (uc) > + memset(uc, 0, sizeof(*uc)); > + > if (run->exit_reason == KVM_EXIT_MMIO && > run->mmio.phys_addr == (uint64_t)ucall_exit_mmio_addr) { > vm_vaddr_t gva; > diff --git a/tools/testing/selftests/kvm/lib/s390x/ucall.c b/tools/testing/selftests/kvm/lib/s390x/ucall.c > index fd589dc9bfab..9d3b0f15249a 100644 > --- a/tools/testing/selftests/kvm/lib/s390x/ucall.c > +++ b/tools/testing/selftests/kvm/lib/s390x/ucall.c > @@ -38,6 +38,9 @@ uint64_t get_ucall(struct kvm_vm *vm, uint32_t vcpu_id, struct ucall *uc) > struct kvm_run *run = vcpu_state(vm, vcpu_id); > struct ucall ucall = {}; > > + if (uc) > + memset(uc, 0, sizeof(*uc)); > + > if (run->exit_reason == KVM_EXIT_S390_SIEIC && > run->s390_sieic.icptcode == 4 && > (run->s390_sieic.ipa >> 8) == 0x83 && /* 0x83 means DIAGNOSE */ > diff --git a/tools/testing/selftests/kvm/lib/x86_64/ucall.c b/tools/testing/selftests/kvm/lib/x86_64/ucall.c > index da4d89ad5419..a3489973e290 100644 > --- a/tools/testing/selftests/kvm/lib/x86_64/ucall.c > +++ b/tools/testing/selftests/kvm/lib/x86_64/ucall.c > @@ -40,6 +40,9 @@ uint64_t get_ucall(struct kvm_vm *vm, uint32_t vcpu_id, struct ucall *uc) > struct kvm_run *run = vcpu_state(vm, vcpu_id); > struct ucall ucall = {}; > > + if (uc) > + memset(uc, 0, sizeof(*uc)); > + > if (run->exit_reason == KVM_EXIT_IO && run->io.port == UCALL_PIO_PORT) { > struct kvm_regs regs; > > -- > 2.28.0.220.ged08abb693-goog > Reviewed-by: Andrew Jones <drjones@xxxxxxxxxx>