From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f65.google.com (mail-wm0-f65.google.com [74.125.82.65]) by dpdk.org (Postfix) with ESMTP id 329BA1B738 for ; Wed, 7 Feb 2018 17:47:31 +0100 (CET) Received: by mail-wm0-f65.google.com with SMTP id f71so4363753wmf.0 for ; Wed, 07 Feb 2018 08:47:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=XtT3DfeeW7YfMYkssZtNByApv5bby2jpOc2WDesFgic=; b=axPiK30h809xsrkiCHA2s8XQf6JuZ2mnNAL/0vXUAl9TtsG14YaP1s9+/qjRRbetfb xxLzj9Ku8jHBAix7jD/J53sNjSXiD9HxF4tZ+jJlZ3I+dzdaNxUTaGawCbV7mAgqkU94 Q40qNvnXCQwDAub33xxZaucfEmL6etC1DE1WsvTHNVySWWNXbI/7bWeKz8qswpjHLUcH wgDTR0FSrCdmt2a0rnoF1H4p2sEdD8+VsGMnyNJgxamAhv/9i9eIYE/sYr4IFavpqgmm 7DvlouuK8gTAXH+ND0y6sJsDK4nm9heaq/PKY3188Tu4Ul/KAEEKEZ0fVVlCWhtQoVPw jVAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=XtT3DfeeW7YfMYkssZtNByApv5bby2jpOc2WDesFgic=; b=be0pfN7S+Ux7pfic4ZH1dUAzmB7gZ99n4x8OzC0zTI7XjNBfyR3Xmu8qg6nJNQEB3i rvhIDijn5qloYjgM+hQNsJy/Gu0E/0gH+AAdO21VArDUJ1cA/fVw1kkYSfutmpf9UiKM oZYM9GM74WE9Ip2JsADaH640vAc/2LDlAkzmHcm81dHbHJF6iKifks1eb9g/88CClDLK oCa0tg5PO0M/au9PFtgVGvf1Uv58+8oJuGx3fZK6j7yPzvyaRzLmz/gBoPjs7bkUdB9E NU0xl/Pz/GcPWTLwB0M+qD7aojKtgYQVWzjNMsSKLFhVfzODYABjR0NJqN+mL9Jqnonv /q3Q== X-Gm-Message-State: APf1xPDc2msA7KG7nKVf9YVBb7OtffNbGlqQGw5j5/wQp9W9+amVjdDs o/uT8P2x2HGEOX5seH31JNu3xFrIKk8= X-Google-Smtp-Source: AH8x225VbuUvHW/PYu63p4v30iT4kADN6aDTN06ENUkZI4DTm5lcpl/HHaRrtjJ3gitn8ap7H9w7KQ== X-Received: by 10.28.38.133 with SMTP id m127mr5022777wmm.40.1518022050855; Wed, 07 Feb 2018 08:47:30 -0800 (PST) Received: from localhost ([2a00:23c5:bef3:400:9531:588b:44ae:bec4]) by smtp.gmail.com with ESMTPSA id b136sm2208866wme.34.2018.02.07.08.47.30 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 07 Feb 2018 08:47:30 -0800 (PST) From: luca.boccassi@gmail.com To: Olivier Matz Cc: Zijie Pan , Yuanhan Liu , dpdk stable Date: Wed, 7 Feb 2018 16:46:41 +0000 Message-Id: <20180207164705.29052-10-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20180207164705.29052-1-luca.boccassi@gmail.com> References: <20180126131332.15346-62-luca.boccassi@gmail.com> <20180207164705.29052-1-luca.boccassi@gmail.com> Subject: [dpdk-stable] patch 'net/virtio: fix memory leak when reinitializing device' has been queued to LTS release 16.11.5 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Feb 2018 16:47:31 -0000 Hi, FYI, your patch has been queued to LTS release 16.11.5 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 02/09/18. So please shout if anyone has objections. Thanks. Luca Boccassi --- >>From 54d790b8897b211962cd764e92275cf0f8b02b9d Mon Sep 17 00:00:00 2001 From: Olivier Matz Date: Tue, 23 Jan 2018 16:54:41 +0100 Subject: [PATCH] net/virtio: fix memory leak when reinitializing device [ upstream commit 3669a1af893088064778f14fba0c2ca88819e095 ] Free the previous queues and the attached mbufs before initializing new ones. The function virtio_dev_free_mbufs() is now called when reconfiguring the device, so we also need to add a check to ensure that it won't crash for uninitialized queues. Fixes: 60e6f4707ef2 ("net/virtio: reinitialize device when configuring") Signed-off-by: Zijie Pan Signed-off-by: Olivier Matz Acked-by: Yuanhan Liu --- drivers/net/virtio/virtio_ethdev.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index 7e2965549..5daa611e4 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -1194,6 +1194,11 @@ virtio_init_device(struct rte_eth_dev *eth_dev, uint64_t req_features) /* Reset the device although not necessary at startup */ vtpci_reset(hw); + if (hw->vqs) { + virtio_dev_free_mbufs(eth_dev); + virtio_free_queues(hw); + } + /* Tell the host we've noticed this device. */ vtpci_set_status(hw, VIRTIO_CONFIG_STATUS_ACK); @@ -1586,6 +1591,9 @@ static void virtio_dev_free_mbufs(struct rte_eth_dev *dev) for (i = 0; i < dev->data->nb_rx_queues; i++) { struct virtnet_rx *rxvq = dev->data->rx_queues[i]; + if (rxvq == NULL || rxvq->vq == NULL) + continue; + PMD_INIT_LOG(DEBUG, "Before freeing rxq[%d] used and unused buf", i); VIRTQUEUE_DUMP(rxvq->vq); @@ -1605,6 +1613,9 @@ static void virtio_dev_free_mbufs(struct rte_eth_dev *dev) for (i = 0; i < dev->data->nb_tx_queues; i++) { struct virtnet_tx *txvq = dev->data->tx_queues[i]; + if (txvq == NULL || txvq->vq == NULL) + continue; + PMD_INIT_LOG(DEBUG, "Before freeing txq[%d] used and unused bufs", i); -- 2.14.2