mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
virtio/vsock: support MSG_EOR bit processing
If packet has 'EOR' bit - set MSG_EOR in 'recvmsg()' flags. Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com> Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> Link: https://lore.kernel.org/r/20210903123251.3273639-1-arseny.krasnov@kaspersky.com Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
1af7e55511
commit
8d5ac871b5
@ -76,8 +76,12 @@ virtio_transport_alloc_pkt(struct virtio_vsock_pkt_info *info,
|
||||
goto out;
|
||||
|
||||
if (msg_data_left(info->msg) == 0 &&
|
||||
info->type == VIRTIO_VSOCK_TYPE_SEQPACKET)
|
||||
info->type == VIRTIO_VSOCK_TYPE_SEQPACKET) {
|
||||
pkt->hdr.flags |= cpu_to_le32(VIRTIO_VSOCK_SEQ_EOM);
|
||||
|
||||
if (info->msg->msg_flags & MSG_EOR)
|
||||
pkt->hdr.flags |= cpu_to_le32(VIRTIO_VSOCK_SEQ_EOR);
|
||||
}
|
||||
}
|
||||
|
||||
trace_virtio_transport_alloc_pkt(src_cid, src_port,
|
||||
@ -460,6 +464,9 @@ static int virtio_transport_seqpacket_do_dequeue(struct vsock_sock *vsk,
|
||||
if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOM) {
|
||||
msg_ready = true;
|
||||
vvs->msg_count--;
|
||||
|
||||
if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOR)
|
||||
msg->msg_flags |= MSG_EOR;
|
||||
}
|
||||
|
||||
virtio_transport_dec_rx_pkt(vvs, pkt);
|
||||
|
Loading…
Reference in New Issue
Block a user