vhost-user: fix mmap offset calculation
authorMichael S. Tsirkin <mst@redhat.com>
Sun, 2 Nov 2014 18:00:28 +0000 (20:00 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Mon, 3 Nov 2014 16:32:48 +0000 (18:32 +0200)
qemu_get_ram_block_host_ptr should get ram_addr_t,
vhost-user passes in GPA.
That's very wrong.

Reported-by: Linhaifeng <haifeng.lin@huawei.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/virtio/vhost-user.c

index 4e88d9c5e9d03c7cbf9603a514b1071c6135ca86..aefe0bbaaf91acc055cf468bfedf4c25dcaced4a 100644 (file)
@@ -226,7 +226,7 @@ static int vhost_user_call(struct vhost_dev *dev, unsigned long int request,
                 msg.memory.regions[fd_num].memory_size  = reg->memory_size;
                 msg.memory.regions[fd_num].guest_phys_addr = reg->guest_phys_addr;
                 msg.memory.regions[fd_num].mmap_offset = reg->userspace_addr -
-                    (uintptr_t) qemu_get_ram_block_host_ptr(reg->guest_phys_addr);
+                    (uintptr_t) qemu_get_ram_block_host_ptr(ram_addr);
                 assert(fd_num < VHOST_MEMORY_MAX_NREGIONS);
                 fds[fd_num++] = fd;
             }