virtio: fix enqueuing zero-length descriptor chains

Previous descriptor chain was being corrupted
by setting invalid vq->req_end (virtio.c:538).

Change-Id: I4b27db02dc990e6af011a1b614e30e3050379e9f
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/392774
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Dariusz Stojaczyk 2017-12-22 11:15:53 +01:00 committed by Ben Walker
parent a58611d513
commit a1ca7a12ff

View File

@ -511,7 +511,8 @@ virtqueue_req_add_iovs(struct virtqueue *vq, struct iovec *iovs, uint16_t iovcnt
* or the caller specifies SPDK_VIRTIO_DESC_F_INDIRECT
*/
prev_head = new_head = vq->vq_desc_head_idx;
prev_head = vq->req_end;
new_head = vq->vq_desc_head_idx;
for (i = 0; i < iovcnt; ++i) {
desc = &vq->vq_ring.desc[new_head];