[iov_iter] new primitives - copy_from_iter_full() and friends
copy_from_iter_full(), copy_from_iter_full_nocache() and csum_and_copy_from_iter_full() - counterparts of copy_from_iter() et.al., advancing iterator only in case of successful full copy and returning whether it had been successful or not. Convert some obvious users. *NOTE* - do not blindly assume that something is a good candidate for those unless you are sure that not advancing iov_iter in failure case is the right thing in this case. Anything that does short read/short write kind of stuff (or is in a loop, etc.) is unlikely to be a good one. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -922,8 +922,7 @@ vhost_scsi_handle_vq(struct vhost_scsi *vs, struct vhost_virtqueue *vq)
|
||||
*/
|
||||
iov_iter_init(&out_iter, WRITE, vq->iov, out, out_size);
|
||||
|
||||
ret = copy_from_iter(req, req_size, &out_iter);
|
||||
if (unlikely(ret != req_size)) {
|
||||
if (unlikely(!copy_from_iter_full(req, req_size, &out_iter))) {
|
||||
vq_err(vq, "Faulted on copy_from_iter\n");
|
||||
vhost_scsi_send_bad_target(vs, vq, head, out);
|
||||
continue;
|
||||
|
Reference in New Issue
Block a user