From: Yuanhan Liu Date: Fri, 2 Jun 2017 00:14:46 +0000 (+0800) Subject: vhost: fix crash on NUMA X-Git-Tag: spdx-start~2992 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=ebd792b386097d40164c81e055a18f1adfa95d8d;p=dpdk.git vhost: fix crash on NUMA The queue allocation was changed, from allocating one queue-pair at a time to one queue at a time. Most of the changes have been done, but just with one being missed: the size of copying the old queue is still based on queue-pair at numa_realloc(), which leads to overwritten issue. As a result, crash may happen. Fix it by specifying the right copy size. Also, the net queue macros are not used any more. Remove them. Fixes: ab4d7b9f1afc ("vhost: turn queue pair to vring") Cc: stable@dpdk.org Reported-by: Ciara Loftus Signed-off-by: Yuanhan Liu Reviewed-by: Jens Freimann Tested-by: Ciara Loftus --- diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c index 49832d63f4..e90b44c172 100644 --- a/lib/librte_vhost/vhost_user.c +++ b/lib/librte_vhost/vhost_user.c @@ -242,8 +242,6 @@ numa_realloc(struct virtio_net *dev, int index) struct vhost_virtqueue *old_vq, *vq; int ret; - enum {VIRTIO_RXQ, VIRTIO_TXQ, VIRTIO_QNUM}; - old_dev = dev; vq = old_vq = dev->virtqueue[index]; @@ -265,7 +263,7 @@ numa_realloc(struct virtio_net *dev, int index) if (!vq) return dev; - memcpy(vq, old_vq, sizeof(*vq) * VIRTIO_QNUM); + memcpy(vq, old_vq, sizeof(*vq)); rte_free(old_vq); }