Commit 91aa49a8 authored by Stefano Garzarella's avatar Stefano Garzarella Committed by David S. Miller
Browse files

vsock/virtio: remove redundant `copy_failed` variable



When memcpy_to_msg() fails in virtio_transport_seqpacket_do_dequeue(),
we already set `dequeued_len` with the negative error value returned
by memcpy_to_msg().

So we can directly check `dequeued_len` value instead of using a
dedicated flag variable to skip the copy path for the rest of
fragments.

Signed-off-by: default avatarStefano Garzarella <sgarzare@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0de5b2e6
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -413,7 +413,6 @@ static int virtio_transport_seqpacket_do_dequeue(struct vsock_sock *vsk,
	struct virtio_vsock_pkt *pkt;
	int dequeued_len = 0;
	size_t user_buf_len = msg_data_left(msg);
	bool copy_failed = false;
	bool msg_ready = false;

	spin_lock_bh(&vvs->rx_lock);
@@ -426,7 +425,7 @@ static int virtio_transport_seqpacket_do_dequeue(struct vsock_sock *vsk,
	while (!msg_ready) {
		pkt = list_first_entry(&vvs->rx_queue, struct virtio_vsock_pkt, list);

		if (!copy_failed) {
		if (dequeued_len >= 0) {
			size_t pkt_len;
			size_t bytes_to_copy;

@@ -443,11 +442,9 @@ static int virtio_transport_seqpacket_do_dequeue(struct vsock_sock *vsk,

				err = memcpy_to_msg(msg, pkt->buf, bytes_to_copy);
				if (err) {
					/* Copy of message failed, set flag to skip
					 * copy path for rest of fragments. Rest of
					/* Copy of message failed. Rest of
					 * fragments will be freed without copy.
					 */
					copy_failed = true;
					dequeued_len = err;
				} else {
					user_buf_len -= bytes_to_copy;