Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753472AbbHJSLp (ORCPT ); Mon, 10 Aug 2015 14:11:45 -0400 Received: from smtp02.citrix.com ([66.165.176.63]:14439 "EHLO SMTP02.CITRIX.COM" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932097AbbHJSLl (ORCPT ); Mon, 10 Aug 2015 14:11:41 -0400 X-IronPort-AV: E=Sophos;i="5.15,647,1432598400"; d="scan'208";a="293079988" From: Julien Grall To: CC: , Julien Grall , Konrad Rzeszutek Wilk , Boris Ostrovsky , David Vrabel , Wei Liu Subject: [PATCH] xen/xenbus: Don't leak memory when unmapping the ring on HVM backend Date: Mon, 10 Aug 2015 19:10:38 +0100 Message-ID: <1439230238-6413-1-git-send-email-julien.grall@citrix.com> X-Mailer: git-send-email 2.1.4 MIME-Version: 1.0 Content-Type: text/plain X-DLP: MIA2 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1639 Lines: 45 The commit ccc9d90a9a8b5c4ad7e9708ec41f75ff9e98d61d "xenbus_client: Extend interface to support multi-page ring" removes the call to free_xenballooned_pages in xenbus_unmap_ring_vfree_hvm. This will result to not give back the pages to Linux and loose them forever. It only happens when the backends are running in HVM domains. Signed-off-by: Julien Grall --- Cc: Konrad Rzeszutek Wilk Cc: Boris Ostrovsky Cc: David Vrabel Cc: Wei Liu Appeared in Linux 4.1. HVM backend, which is always the case on ARM, will leak every mapped ring (i.e ~12KB per domain with 1 disk and 1 vif). --- drivers/xen/xenbus/xenbus_client.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/xen/xenbus/xenbus_client.c b/drivers/xen/xenbus/xenbus_client.c index 9ad3272..e303535 100644 --- a/drivers/xen/xenbus/xenbus_client.c +++ b/drivers/xen/xenbus/xenbus_client.c @@ -814,8 +814,10 @@ static int xenbus_unmap_ring_vfree_hvm(struct xenbus_device *dev, void *vaddr) rv = xenbus_unmap_ring(dev, node->handles, node->nr_handles, addrs); - if (!rv) + if (!rv) { vunmap(vaddr); + free_xenballooned_pages(node->nr_handles, node->hvm.pages); + } else WARN(1, "Leaking %p, size %u page(s)\n", vaddr, node->nr_handles); -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/