diff options
Diffstat (limited to 'drivers/vhost/vhost.c')
-rw-r--r-- | drivers/vhost/vhost.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c index b8e112720812..3f101946b4f9 100644 --- a/drivers/vhost/vhost.c +++ b/drivers/vhost/vhost.c | |||
@@ -714,8 +714,8 @@ int vhost_log_write(struct vhost_virtqueue *vq, struct vhost_log *log, | |||
714 | return 0; | 714 | return 0; |
715 | } | 715 | } |
716 | 716 | ||
717 | int translate_desc(struct vhost_dev *dev, u64 addr, u32 len, | 717 | static int translate_desc(struct vhost_dev *dev, u64 addr, u32 len, |
718 | struct iovec iov[], int iov_size) | 718 | struct iovec iov[], int iov_size) |
719 | { | 719 | { |
720 | const struct vhost_memory_region *reg; | 720 | const struct vhost_memory_region *reg; |
721 | struct vhost_memory *mem; | 721 | struct vhost_memory *mem; |
@@ -740,7 +740,7 @@ int translate_desc(struct vhost_dev *dev, u64 addr, u32 len, | |||
740 | _iov = iov + ret; | 740 | _iov = iov + ret; |
741 | size = reg->memory_size - addr + reg->guest_phys_addr; | 741 | size = reg->memory_size - addr + reg->guest_phys_addr; |
742 | _iov->iov_len = min((u64)len, size); | 742 | _iov->iov_len = min((u64)len, size); |
743 | _iov->iov_base = (void *)(unsigned long) | 743 | _iov->iov_base = (void __user *)(unsigned long) |
744 | (reg->userspace_addr + addr - reg->guest_phys_addr); | 744 | (reg->userspace_addr + addr - reg->guest_phys_addr); |
745 | s += size; | 745 | s += size; |
746 | addr += size; | 746 | addr += size; |
@@ -994,7 +994,7 @@ void vhost_discard_vq_desc(struct vhost_virtqueue *vq) | |||
994 | * want to notify the guest, using eventfd. */ | 994 | * want to notify the guest, using eventfd. */ |
995 | int vhost_add_used(struct vhost_virtqueue *vq, unsigned int head, int len) | 995 | int vhost_add_used(struct vhost_virtqueue *vq, unsigned int head, int len) |
996 | { | 996 | { |
997 | struct vring_used_elem *used; | 997 | struct vring_used_elem __user *used; |
998 | 998 | ||
999 | /* The virtqueue contains a ring of used buffers. Get a pointer to the | 999 | /* The virtqueue contains a ring of used buffers. Get a pointer to the |
1000 | * next entry in that used ring. */ | 1000 | * next entry in that used ring. */ |
@@ -1018,7 +1018,8 @@ int vhost_add_used(struct vhost_virtqueue *vq, unsigned int head, int len) | |||
1018 | smp_wmb(); | 1018 | smp_wmb(); |
1019 | /* Log used ring entry write. */ | 1019 | /* Log used ring entry write. */ |
1020 | log_write(vq->log_base, | 1020 | log_write(vq->log_base, |
1021 | vq->log_addr + ((void *)used - (void *)vq->used), | 1021 | vq->log_addr + |
1022 | ((void __user *)used - (void __user *)vq->used), | ||
1022 | sizeof *used); | 1023 | sizeof *used); |
1023 | /* Log used index update. */ | 1024 | /* Log used index update. */ |
1024 | log_write(vq->log_base, | 1025 | log_write(vq->log_base, |