Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/811164/?format=api
{ "id": 811164, "url": "http://patchwork.ozlabs.org/api/patches/811164/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170907202637.23121.65136.stgit@gimli.home/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20170907202637.23121.65136.stgit@gimli.home>", "list_archive_url": null, "date": "2017-09-07T20:27:09", "name": "vhost: Release memory references on cleanup", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "341d00089a97b2cfd3aaa9f5954b83c7ac2670ab", "submitter": { "id": 4123, "url": "http://patchwork.ozlabs.org/api/people/4123/?format=api", "name": "Alex Williamson", "email": "alex.williamson@redhat.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170907202637.23121.65136.stgit@gimli.home/mbox/", "series": [ { "id": 2058, "url": "http://patchwork.ozlabs.org/api/series/2058/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=2058", "date": "2017-09-07T20:27:09", "name": "vhost: Release memory references on cleanup", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/2058/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/811164/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/811164/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org", "Authentication-Results": [ "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)", "ext-mx10.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com", "ext-mx10.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=alex.williamson@redhat.com" ], "Received": [ "from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xpC0g1Wjcz9sBW\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 8 Sep 2017 06:36:34 +1000 (AEST)", "from localhost ([::1]:42208 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dq3XL-0005So-OA\n\tfor incoming@patchwork.ozlabs.org; Thu, 07 Sep 2017 16:36:31 -0400", "from eggs.gnu.org ([2001:4830:134:3::10]:45655)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <alex.williamson@redhat.com>) id 1dq3OX-0007r5-G5\n\tfor qemu-devel@nongnu.org; Thu, 07 Sep 2017 16:27:30 -0400", "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <alex.williamson@redhat.com>) id 1dq3OS-0002y5-Rh\n\tfor qemu-devel@nongnu.org; Thu, 07 Sep 2017 16:27:25 -0400", "from mx1.redhat.com ([209.132.183.28]:54286)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <alex.williamson@redhat.com>)\n\tid 1dq3OS-0002wU-Kz\n\tfor qemu-devel@nongnu.org; Thu, 07 Sep 2017 16:27:20 -0400", "from smtp.corp.redhat.com\n\t(int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id F26FF6148C\n\tfor <qemu-devel@nongnu.org>; Thu, 7 Sep 2017 20:27:18 +0000 (UTC)", "from gimli.home (ovpn-116-27.phx2.redhat.com [10.3.116.27])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id 14C045D973;\n\tThu, 7 Sep 2017 20:27:10 +0000 (UTC)" ], "DMARC-Filter": "OpenDMARC Filter v1.3.2 mx1.redhat.com F26FF6148C", "From": "Alex Williamson <alex.williamson@redhat.com>", "To": "qemu-devel@nongnu.org", "Date": "Thu, 07 Sep 2017 14:27:09 -0600", "Message-ID": "<20170907202637.23121.65136.stgit@gimli.home>", "User-Agent": "StGit/0.17.1-dirty", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "7bit", "X-Scanned-By": "MIMEDefang 2.79 on 10.5.11.14", "X-Greylist": "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.39]);\n\tThu, 07 Sep 2017 20:27:19 +0000 (UTC)", "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]", "X-Received-From": "209.132.183.28", "Subject": "[Qemu-devel] [PATCH] vhost: Release memory references on cleanup", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.21", "Precedence": "list", "List-Id": "<qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<http://lists.nongnu.org/archive/html/qemu-devel/>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Cc": "pbonzini@redhat.com, mst@redhat.com", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>" }, "content": "vhost registers a MemoryListener where it adds and removes references\nto MemoryRegions as the MemoryRegionSections pass through. The\nregion_add callback is invoked for each existing section when the\nMemoryListener is registered, but unregistering the MemoryListener\nperforms no reciprocal region_del callback. It's therefore the\nowner of the MemoryListener's responsibility to cleanup any persistent\nchanges, such as these memory references, after unregistering.\n\nThe consequence of this bug is that if we have both a vhost device\nand a vfio device, the vhost device will reference any mmap'd MMIO of\nthe vfio device via this MemoryListener. If the vhost device is then\nremoved, those references remain outstanding. If we then attempt to\nremove the vfio device, it never gets finalized and the only way to\nrelease the kernel file descriptors is to terminate the QEMU process.\n\nFixes: dfde4e6e1a86 (\"memory: add ref/unref calls\")\nCc: Michael S. Tsirkin <mst@redhat.com>\nCc: Paolo Bonzini <pbonzini@redhat.com>\nCc: qemu-stable@nongnu.org # v1.6.0+\nSigned-off-by: Alex Williamson <alex.williamson@redhat.com>\n---\n hw/virtio/vhost.c | 4 ++++\n 1 file changed, 4 insertions(+)", "diff": "diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c\nindex 6eddb099b02f..b737ca915b06 100644\n--- a/hw/virtio/vhost.c\n+++ b/hw/virtio/vhost.c\n@@ -1356,6 +1356,10 @@ void vhost_dev_cleanup(struct vhost_dev *hdev)\n if (hdev->mem) {\n /* those are only safe after successful init */\n memory_listener_unregister(&hdev->memory_listener);\n+ for (i = 0; i < hdev->n_mem_sections; ++i) {\n+ MemoryRegionSection *section = &hdev->mem_sections[i];\n+ memory_region_unref(section->mr);\n+ }\n QLIST_REMOVE(hdev, entry);\n }\n if (hdev->migration_blocker) {\n", "prefixes": [] }