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: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Stefano Garzarella 2021-06-18 15:35:26 +02:00 committed by David S. Miller
parent 0de5b2e672
commit 91aa49a8fa

View file

@ -413,7 +413,6 @@ static int virtio_transport_seqpacket_do_dequeue(struct vsock_sock *vsk,
struct virtio_vsock_pkt *pkt; struct virtio_vsock_pkt *pkt;
int dequeued_len = 0; int dequeued_len = 0;
size_t user_buf_len = msg_data_left(msg); size_t user_buf_len = msg_data_left(msg);
bool copy_failed = false;
bool msg_ready = false; bool msg_ready = false;
spin_lock_bh(&vvs->rx_lock); spin_lock_bh(&vvs->rx_lock);
@ -426,7 +425,7 @@ static int virtio_transport_seqpacket_do_dequeue(struct vsock_sock *vsk,
while (!msg_ready) { while (!msg_ready) {
pkt = list_first_entry(&vvs->rx_queue, struct virtio_vsock_pkt, list); 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 pkt_len;
size_t bytes_to_copy; 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); err = memcpy_to_msg(msg, pkt->buf, bytes_to_copy);
if (err) { if (err) {
/* Copy of message failed, set flag to skip /* Copy of message failed. Rest of
* copy path for rest of fragments. Rest of
* fragments will be freed without copy. * fragments will be freed without copy.
*/ */
copy_failed = true;
dequeued_len = err; dequeued_len = err;
} else { } else {
user_buf_len -= bytes_to_copy; user_buf_len -= bytes_to_copy;