From: Michael S. Tsirkin Date: Mon, 24 Sep 2012 11:26:55 +0000 (+0200) Subject: virtio-net: first s/g is always at start of buf X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=c8d28e7e336869524d166d88f08ad476eadedccb;p=qemu.git virtio-net: first s/g is always at start of buf We know offset is 0, assert that. Signed-off-by: Michael S. Tsirkin --- diff --git a/hw/virtio-net.c b/hw/virtio-net.c index 5128a2a8ba..59ab6746f0 100644 --- a/hw/virtio-net.c +++ b/hw/virtio-net.c @@ -631,6 +631,7 @@ static ssize_t virtio_net_receive(NetClientState *nc, const uint8_t *buf, size_t } if (i == 0) { + assert(offset == 0); if (n->mergeable_rx_bufs) { mhdr_cnt = iov_copy(mhdr_sg, ARRAY_SIZE(mhdr_sg), sg, elem.in_num, @@ -638,8 +639,8 @@ static ssize_t virtio_net_receive(NetClientState *nc, const uint8_t *buf, size_t sizeof(mhdr.num_buffers)); } - receive_header(n, sg, elem.in_num, buf + offset, size - offset); - offset += n->host_hdr_len; + receive_header(n, sg, elem.in_num, buf, size); + offset = n->host_hdr_len; total += n->guest_hdr_len; guest_offset = n->guest_hdr_len; } else {