kvm_xen_schedop_poll does a kmalloc_array() when a VM polls the host
for more than one event channel potr (nr_ports > 1).
After the kmalloc_array(), the error paths need to go through the
"out" label, but the call to kvm_read_guest_virt() does not.
Fixes: 92c58965e965 ("KVM: x86/xen: Use kvm_read_guest_virt() instead of open-coding it badly")
Reviewed-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Manuel Andreas <manuel.andreas@tum.de>
[Adjusted commit message. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
        if (kvm_read_guest_virt(vcpu, (gva_t)sched_poll.ports, ports,
                                sched_poll.nr_ports * sizeof(*ports), &e)) {
                *r = -EFAULT;
-               return true;
+               goto out;
        }
 
        for (i = 0; i < sched_poll.nr_ports; i++) {