mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
fix 'direction' argument of iov_iter_{init,bvec}()
[ Upstream commite3bf3df824] READ means "data destination", WRITE - "data source". Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Stable-dep-of:6dd88fd59d("vhost-scsi: unbreak any layout for response") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
02f719be2f
commit
ff85ec97d1
@@ -833,7 +833,7 @@ static int vhost_copy_to_user(struct vhost_virtqueue *vq, void __user *to,
|
|||||||
VHOST_ACCESS_WO);
|
VHOST_ACCESS_WO);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out;
|
goto out;
|
||||||
iov_iter_init(&t, WRITE, vq->iotlb_iov, ret, size);
|
iov_iter_init(&t, READ, vq->iotlb_iov, ret, size);
|
||||||
ret = copy_to_iter(from, size, &t);
|
ret = copy_to_iter(from, size, &t);
|
||||||
if (ret == size)
|
if (ret == size)
|
||||||
ret = 0;
|
ret = 0;
|
||||||
@@ -872,7 +872,7 @@ static int vhost_copy_from_user(struct vhost_virtqueue *vq, void *to,
|
|||||||
(unsigned long long) size);
|
(unsigned long long) size);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
iov_iter_init(&f, READ, vq->iotlb_iov, ret, size);
|
iov_iter_init(&f, WRITE, vq->iotlb_iov, ret, size);
|
||||||
ret = copy_from_iter(to, size, &f);
|
ret = copy_from_iter(to, size, &f);
|
||||||
if (ret == size)
|
if (ret == size)
|
||||||
ret = 0;
|
ret = 0;
|
||||||
@@ -2136,7 +2136,7 @@ static int get_indirect(struct vhost_virtqueue *vq,
|
|||||||
vq_err(vq, "Translation failure %d in indirect.\n", ret);
|
vq_err(vq, "Translation failure %d in indirect.\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
iov_iter_init(&from, READ, vq->indirect, ret, len);
|
iov_iter_init(&from, WRITE, vq->indirect, ret, len);
|
||||||
count = len / sizeof desc;
|
count = len / sizeof desc;
|
||||||
/* Buffers are chained via a 16 bit next field, so
|
/* Buffers are chained via a 16 bit next field, so
|
||||||
* we can have at most 2^16 of these. */
|
* we can have at most 2^16 of these. */
|
||||||
|
|||||||
@@ -1161,7 +1161,7 @@ static inline int copy_from_iotlb(const struct vringh *vrh, void *dst,
|
|||||||
else if (ret < 0)
|
else if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
iov_iter_bvec(&iter, READ, iov, ret, translated);
|
iov_iter_bvec(&iter, WRITE, iov, ret, translated);
|
||||||
|
|
||||||
ret = copy_from_iter(dst, translated, &iter);
|
ret = copy_from_iter(dst, translated, &iter);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
@@ -1194,7 +1194,7 @@ static inline int copy_to_iotlb(const struct vringh *vrh, void *dst,
|
|||||||
else if (ret < 0)
|
else if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
iov_iter_bvec(&iter, WRITE, iov, ret, translated);
|
iov_iter_bvec(&iter, READ, iov, ret, translated);
|
||||||
|
|
||||||
ret = copy_to_iter(src, translated, &iter);
|
ret = copy_to_iter(src, translated, &iter);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user