Skip to content

Commit 5a53249

Browse files
styxsbonzini
authored andcommitted
KVM: x86/xen: Fix cleanup logic in emulation of Xen schedop poll hypercalls
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: 92c5896 ("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>
1 parent 4b7d440 commit 5a53249

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

arch/x86/kvm/xen.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1526,7 +1526,7 @@ static bool kvm_xen_schedop_poll(struct kvm_vcpu *vcpu, bool longmode,
15261526
if (kvm_read_guest_virt(vcpu, (gva_t)sched_poll.ports, ports,
15271527
sched_poll.nr_ports * sizeof(*ports), &e)) {
15281528
*r = -EFAULT;
1529-
return true;
1529+
goto out;
15301530
}
15311531

15321532
for (i = 0; i < sched_poll.nr_ports; i++) {

0 commit comments

Comments
 (0)