From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id CBF0DC5F8 for ; Thu, 16 Jun 2016 11:17:07 +0200 (CEST) Received: from eucpsbgm2.samsung.com (unknown [203.254.199.245]) by mailout2.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0O8U005UOXSJU070@mailout2.w1.samsung.com> for dev@dpdk.org; Thu, 16 Jun 2016 10:17:07 +0100 (BST) X-AuditID: cbfec7f5-f792a6d000001302-8a-57626e929800 Received: from eusync4.samsung.com ( [203.254.199.214]) by eucpsbgm2.samsung.com (EUCPMTA) with SMTP id 37.73.04866.29E62675; Thu, 16 Jun 2016 10:17:06 +0100 (BST) Received: from imaximets.rnd.samsung.ru ([106.109.129.180]) by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0O8U000IUXRWS090@eusync4.samsung.com>; Thu, 16 Jun 2016 10:17:06 +0100 (BST) From: Ilya Maximets To: dev@dpdk.org, Huawei Xie , Yuanhan Liu Cc: Dyasly Sergey , Heetae Ahn , Vladimir Shilkin , Victor Kaplansky , Ilya Maximets Date: Thu, 16 Jun 2016 12:16:37 +0300 Message-id: <1466068597-3449-3-git-send-email-i.maximets@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1466068597-3449-1-git-send-email-i.maximets@samsung.com> References: <1466068597-3449-1-git-send-email-i.maximets@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprJLMWRmVeSWpSXmKPExsVy+t/xa7qT8pLCDfrf21i8+7SdyWLa59vs Fu0zzzJZXGn/yW4xebaUxeRNKxgtFh84zGxxfcIFVgcOj18LlrJ6LN7zkslj3slAj/f7rrJ5 9G1ZxRjAGsVlk5Kak1mWWqRvl8CV0TB7FlPBNt6KT8s+szYwtnN3MXJySAiYSPQcXcQEYYtJ XLi3nq2LkYtDSGApo8S/O0eZIZxWJolrE86CVbEJ6EicWn2EEcQWEUiQOLL/NytIEbPAOUaJ JVfWgBUJC1hL7LnUzQZiswioSrRcPcAOYvMKuEp8PrYLap2cxM1zncwgNqeAm8SbC4dYQWwh oJpN/TOYJzDyLmBkWMUomlqaXFCclJ5rpFecmFtcmpeul5yfu4kREmBfdzAuPWZ1iFGAg1GJ h1dgfWK4EGtiWXFl7iFGCQ5mJRFe+aykcCHelMTKqtSi/Pii0pzU4kOM0hwsSuK8M3e9DxES SE8sSc1OTS1ILYLJMnFwSjUwqlVrOZ/fPPmUUf15T5YNarpsR5cIH93YoZR7617iHotTfuGh u1mSt6oc1WcKcIkSnJrq/dmhdOnyTx+PHXedftdHOtq8jPfsy2l8ZbeLotINJXd22p5abveA 9/xha6Pt3ycv2RO2kctf2LGvWG5zeXg5T/iu7YX7Dlj67nzP+snPQP3B8dRAJZbijERDLeai 4kQAlIJUzCwCAAA= Subject: [dpdk-dev] [PATCH v2 2/2] vhost: unmap log memory on cleanup. X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2016 09:17:07 -0000 Fixes memory leak on QEMU migration. Fixes: 54f9e32305d4 ("vhost: handle dirty pages logging request") Signed-off-by: Ilya Maximets --- lib/librte_vhost/vhost-net.h | 1 + lib/librte_vhost/vhost_user/virtio-net-user.c | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/librte_vhost/vhost-net.h b/lib/librte_vhost/vhost-net.h index ec8f964..38593a2 100644 --- a/lib/librte_vhost/vhost-net.h +++ b/lib/librte_vhost/vhost-net.h @@ -134,6 +134,7 @@ struct virtio_net { char ifname[IF_NAME_SZ]; uint64_t log_size; uint64_t log_base; + uint64_t log_addr; struct ether_addr mac; } __rte_cache_aligned; diff --git a/lib/librte_vhost/vhost_user/virtio-net-user.c b/lib/librte_vhost/vhost_user/virtio-net-user.c index e6a2aed..a867a43 100644 --- a/lib/librte_vhost/vhost_user/virtio-net-user.c +++ b/lib/librte_vhost/vhost_user/virtio-net-user.c @@ -95,6 +95,10 @@ vhost_backend_cleanup(struct virtio_net *dev) free(dev->mem); dev->mem = NULL; } + if (dev->log_addr) { + munmap((void *)(uintptr_t)dev->log_addr, dev->log_size); + dev->log_addr = 0; + } } int @@ -407,8 +411,15 @@ user_set_log_base(int vid, struct VhostUserMsg *msg) return -1; } - /* TODO: unmap on stop */ - dev->log_base = (uint64_t)(uintptr_t)addr + off; + /* + * Free previously mapped log memory on occasionally + * multiple VHOST_USER_SET_LOG_BASE. + */ + if (dev->log_addr) { + munmap((void *)(uintptr_t)dev->log_addr, dev->log_size); + } + dev->log_addr = (uint64_t)(uintptr_t)addr; + dev->log_base = dev->log_addr + off; dev->log_size = size; return 0; -- 2.7.4