From mboxrd@z Thu Jan 1 00:00:00 1970 From: xiangxia.m.yue@gmail.com Subject: [PATCH] vhost: refine the vhost_new_device Date: Fri, 8 Jun 2018 02:18:04 -0700 Message-ID: <1528449484-8664-1-git-send-email-xiangxia.m.yue@gmail.com> Cc: Tonghao Zhang To: dev@dpdk.org Return-path: Received: from mail-pl0-f68.google.com (mail-pl0-f68.google.com [209.85.160.68]) by dpdk.org (Postfix) with ESMTP id 65BA77CE1 for ; Fri, 8 Jun 2018 11:18:14 +0200 (CEST) Received: by mail-pl0-f68.google.com with SMTP id t12-v6so7939086plo.7 for ; Fri, 08 Jun 2018 02:18:14 -0700 (PDT) List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Tonghao Zhang Make sure find avalid device id before allocating virtio_net, if not, return directly. It may avoid allocating and freeing virtio_net when there is not valid device id. Signed-off-by: Tonghao Zhang --- lib/librte_vhost/vhost.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c index afded49..ed7b7ac 100644 --- a/lib/librte_vhost/vhost.c +++ b/lib/librte_vhost/vhost.c @@ -268,21 +268,21 @@ struct virtio_net *dev; int i; - dev = rte_zmalloc(NULL, sizeof(struct virtio_net), 0); - if (dev == NULL) { - RTE_LOG(ERR, VHOST_CONFIG, - "Failed to allocate memory for new dev.\n"); - return -1; - } - for (i = 0; i < MAX_VHOST_DEVICE; i++) { if (vhost_devices[i] == NULL) break; } + if (i == MAX_VHOST_DEVICE) { RTE_LOG(ERR, VHOST_CONFIG, "Failed to find a free slot for new device.\n"); - rte_free(dev); + return -1; + } + + dev = rte_zmalloc(NULL, sizeof(struct virtio_net), 0); + if (dev == NULL) { + RTE_LOG(ERR, VHOST_CONFIG, + "Failed to allocate memory for new dev.\n"); return -1; } -- 1.8.3.1