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-Tag: v1.3.0-rc0~140^2~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c8d28e7e336869524d166d88f08ad476eadedccb;p=thirdparty%2Fqemu.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 5128a2a8ba6..59ab6746f06 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 {