From nobody Fri Oct 18 08:45:23 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1718291748836816.5163883782286; Thu, 13 Jun 2024 08:15:48 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id BE1B4CB3; Thu, 13 Jun 2024 11:15:47 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id AF33A1261; Thu, 13 Jun 2024 11:12:25 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 39B99108B; Thu, 13 Jun 2024 11:12:18 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id B6A5F1228 for ; Thu, 13 Jun 2024 11:12:02 -0400 (EDT) Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-516-BgLwJhPCPDqYXRNRVb6fVQ-1; Thu, 13 Jun 2024 11:12:01 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 2F95119560A2 for ; Thu, 13 Jun 2024 15:12:00 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.20]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4BA161956058 for ; Thu, 13 Jun 2024 15:11:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: *** X-Spam-Status: No, score=3.0 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,RCVD_IN_SBL_CSS,SPF_HELO_NONE, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1718291522; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0NWQnHi4hbimPhb+z27E7rVAKjOU0YTOeMi3WMJrTKk=; b=BlNNK+jaOTgpkVDR6XZI/y2Ybk3DCp+ieWzWF1ngkA1h40Yl8sFXxFwkd2c6g6S3W2R3Pi 1z64mFjHc5sKxdAI8E7wntXBDZ1eCY6XqW6ADTrJ3XxbFDA5ZcfEg9dx5+qDmOfzM34lWH BS3BYNUyqX544F2KFsfj0MLZjbzrAx4= X-MC-Unique: BgLwJhPCPDqYXRNRVb6fVQ-1 From: Peter Krempa To: devel@lists.libvirt.org Subject: [PATCH 11/12] qemuMigrationSrcRun: Re-check whether VM is active before accessing job data Date: Thu, 13 Jun 2024 17:11:43 +0200 Message-ID: <4b072305eb2fb98e89501abd8604a486cf73f03e.1718291410.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: Y4KEP526PATUZA53HX7ZRUIHATXMQJNA X-Message-ID-Hash: Y4KEP526PATUZA53HX7ZRUIHATXMQJNA X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1718291750415100001 Content-Type: text/plain; charset="utf-8" 'qemuProcessStop()' clears the 'current' job data. While the code under the 'error' label in 'qemuMigrationSrcRun()' does check that the VM is active before accessing the job, it also invokes multiple helper functions to clean up the migration including 'qemuMigrationSrcNBDCopyCancel()' which calls 'qemuDomainObjWait()' invalidating the result of the liveness check as it unlocks the VM. Duplicate the liveness check and explain why. The rest of the code e.g. accessing the monitor is safe as 'qemuDomainEnterMonitorAsync()' performs a liveness check. The cleanup path just ignores the return values of those functions. Signed-off-by: Peter Krempa --- src/qemu/qemu_migration.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 3524915e9d..89ddc586bd 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5074,7 +5074,13 @@ qemuMigrationSrcRun(virQEMUDriver *driver, dconn); qemuMigrationSrcCancelRemoveTempBitmaps(vm, VIR_ASYNC_JOB_MIGRATIO= N_OUT); + } + /* We need to re-check that the VM is active as functions like + * qemuMigrationSrcCancel/qemuMigrationSrcNBDCopyCancel wait on the VM + * condition unlocking the VM object which can lead to a cleanup of the + * 'current' job via qemuProcessStop */ + if (qemuDomainObjIsActive(vm)) { if (vm->job->current->status !=3D VIR_DOMAIN_JOB_STATUS_CANCELED) vm->job->current->status =3D VIR_DOMAIN_JOB_STATUS_FAILED; } --=20 2.45.2