diff options
author | Gleb Natapov <gleb@redhat.com> | 2011-04-12 05:36:24 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2011-05-22 08:39:52 -0400 |
commit | 0004c7c25757f103ddb3a9e4bcfd533aad41f9a0 (patch) | |
tree | 9960053fb6ee584744cda342bcaa86dc806277b1 /arch | |
parent | 4947e7cd0ee36e1aa37dfec4f7fa71cc64a2f0fd (diff) |
KVM: Fix compound mmio
mmio_index should be taken into account when copying data from
userspace.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kvm/x86.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index e3ac212f7c87..a9a307a75465 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -5576,7 +5576,8 @@ static int complete_mmio(struct kvm_vcpu *vcpu) | |||
5576 | if (vcpu->mmio_needed) { | 5576 | if (vcpu->mmio_needed) { |
5577 | vcpu->mmio_needed = 0; | 5577 | vcpu->mmio_needed = 0; |
5578 | if (!vcpu->mmio_is_write) | 5578 | if (!vcpu->mmio_is_write) |
5579 | memcpy(vcpu->mmio_data, run->mmio.data, 8); | 5579 | memcpy(vcpu->mmio_data + vcpu->mmio_index, |
5580 | run->mmio.data, 8); | ||
5580 | vcpu->mmio_index += 8; | 5581 | vcpu->mmio_index += 8; |
5581 | if (vcpu->mmio_index < vcpu->mmio_size) { | 5582 | if (vcpu->mmio_index < vcpu->mmio_size) { |
5582 | run->exit_reason = KVM_EXIT_MMIO; | 5583 | run->exit_reason = KVM_EXIT_MMIO; |