From nobody Sat Apr 27 23:33:01 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=virtuozzo.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1554125295671213.06989416551892; Mon, 1 Apr 2019 06:28:15 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D5CBE58E35; Mon, 1 Apr 2019 13:28:13 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id ED6FD1001DD8; Mon, 1 Apr 2019 13:28:12 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id EAC973FA48; Mon, 1 Apr 2019 13:28:10 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x31DSAPq020188 for ; Mon, 1 Apr 2019 09:28:10 -0400 Received: by smtp.corp.redhat.com (Postfix) id 60989108F824; Mon, 1 Apr 2019 13:28:10 +0000 (UTC) Received: from mx1.redhat.com (ext-mx04.extmail.prod.ext.phx2.redhat.com [10.5.110.28]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5AEB9108426E for ; Mon, 1 Apr 2019 13:28:07 +0000 (UTC) Received: from relay.sw.ru (relay.sw.ru [185.231.240.75]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BACF781114 for ; Mon, 1 Apr 2019 13:28:05 +0000 (UTC) Received: from [10.94.3.220] (helo=dim-vz7.qa.sw.ru) by relay.sw.ru with esmtp (Exim 4.91) (envelope-from ) id 1hAwyo-0003Da-Vc for libvir-list@redhat.com; Mon, 01 Apr 2019 16:28:03 +0300 From: Nikolay Shirokovskiy To: libvir-list@redhat.com Date: Mon, 1 Apr 2019 16:28:01 +0300 Message-Id: <1554125281-155394-1-git-send-email-nshirokovskiy@virtuozzo.com> X-Greylist: Sender passed SPF test, ACL 242 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Mon, 01 Apr 2019 13:28:06 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Mon, 01 Apr 2019 13:28:06 +0000 (UTC) for IP:'185.231.240.75' DOMAIN:'relay.sw.ru' HELO:'relay.sw.ru' FROM:'nshirokovskiy@virtuozzo.com' RCPT:'' X-RedHat-Spam-Score: -0.001 (SPF_PASS) 185.231.240.75 relay.sw.ru 185.231.240.75 relay.sw.ru X-Scanned-By: MIMEDefang 2.78 on 10.5.110.28 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2] qemu: fix domain unlock/unref in qemuMigrationSrcPerform X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Mon, 01 Apr 2019 13:28:14 +0000 (UTC) Content-Type: text/plain; charset="utf-8" qemuMigrationSrcPerform callers expect it to call virDomainObjEndAPI in any case so on error paths we miss the virDomainObjEndAPI call. To fix this let's make qemuMigrationSrcPerform callers responsible for the virDomainObjEndAPI call. Signed-off-by: Nikolay Shirokovskiy --- diff to v1 [1]: - move virDomainObjEndAPI call to qemuMigrationSrcPerform callers [1] https://www.redhat.com/archives/libvir-list/2019-April/msg00032.html src/qemu/qemu_driver.c | 21 +++++++++------------ src/qemu/qemu_migration.c | 2 -- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 62d8d97..37baa5c 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -12550,7 +12550,7 @@ qemuDomainMigratePerform(virDomainPtr dom, unsigned long resource) { virQEMUDriverPtr driver =3D dom->conn->privateData; - virDomainObjPtr vm; + virDomainObjPtr vm =3D NULL; int ret =3D -1; const char *dconnuri =3D NULL; qemuMigrationParamsPtr migParams =3D NULL; @@ -12571,10 +12571,8 @@ qemuDomainMigratePerform(virDomainPtr dom, if (!(vm =3D qemuDomObjFromDomain(dom))) goto cleanup; =20 - if (virDomainMigratePerformEnsureACL(dom->conn, vm->def) < 0) { - virDomainObjEndAPI(&vm); + if (virDomainMigratePerformEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - } =20 if (flags & VIR_MIGRATE_PEER2PEER) VIR_STEAL_PTR(dconnuri, uri); @@ -12592,6 +12590,7 @@ qemuDomainMigratePerform(virDomainPtr dom, flags, dname, resource, false); =20 cleanup: + virDomainObjEndAPI(&vm); qemuMigrationParamsFree(migParams); return ret; } @@ -12988,7 +12987,7 @@ qemuDomainMigratePerform3(virDomainPtr dom, unsigned long resource) { virQEMUDriverPtr driver =3D dom->conn->privateData; - virDomainObjPtr vm; + virDomainObjPtr vm =3D NULL; qemuMigrationParamsPtr migParams =3D NULL; int ret =3D -1; =20 @@ -13001,10 +13000,8 @@ qemuDomainMigratePerform3(virDomainPtr dom, if (!(vm =3D qemuDomObjFromDomain(dom))) goto cleanup; =20 - if (virDomainMigratePerform3EnsureACL(dom->conn, vm->def) < 0) { - virDomainObjEndAPI(&vm); + if (virDomainMigratePerform3EnsureACL(dom->conn, vm->def) < 0) goto cleanup; - } =20 ret =3D qemuMigrationSrcPerform(driver, dom->conn, vm, xmlin, NULL, dconnuri, uri, NULL, NULL, 0, NULL, 0, @@ -13014,6 +13011,7 @@ qemuDomainMigratePerform3(virDomainPtr dom, flags, dname, resource, true); =20 cleanup: + virDomainObjEndAPI(&vm); qemuMigrationParamsFree(migParams); return ret; } @@ -13030,7 +13028,7 @@ qemuDomainMigratePerform3Params(virDomainPtr dom, unsigned int flags) { virQEMUDriverPtr driver =3D dom->conn->privateData; - virDomainObjPtr vm; + virDomainObjPtr vm =3D NULL; const char *dom_xml =3D NULL; const char *persist_xml =3D NULL; const char *dname =3D NULL; @@ -13088,10 +13086,8 @@ qemuDomainMigratePerform3Params(virDomainPtr dom, if (!(vm =3D qemuDomObjFromDomain(dom))) goto cleanup; =20 - if (virDomainMigratePerform3ParamsEnsureACL(dom->conn, vm->def) < 0) { - virDomainObjEndAPI(&vm); + if (virDomainMigratePerform3ParamsEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - } =20 ret =3D qemuMigrationSrcPerform(driver, dom->conn, vm, dom_xml, persis= t_xml, dconnuri, uri, graphicsuri, listenAddres= s, @@ -13100,6 +13096,7 @@ qemuDomainMigratePerform3Params(virDomainPtr dom, cookiein, cookieinlen, cookieout, cookie= outlen, flags, dname, bandwidth, true); cleanup: + virDomainObjEndAPI(&vm); qemuMigrationParamsFree(migParams); VIR_FREE(migrate_disks); return ret; diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 419a729..bb43aff 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -4686,7 +4686,6 @@ qemuMigrationSrcPerformJob(virQEMUDriverPtr driver, } =20 cleanup: - virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); virObjectUnref(cfg); return ret; @@ -4757,7 +4756,6 @@ qemuMigrationSrcPerformPhase(virQEMUDriverPtr driver, qemuDomainRemoveInactiveJob(driver, vm); =20 cleanup: - virDomainObjEndAPI(&vm); return ret; } =20 --=20 1.8.3.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list