From nobody Sat May 4 03:55:04 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) client-ip=216.205.24.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1629721369; cv=none; d=zohomail.com; s=zohoarc; b=cn+hqQ2EP2VdCov82Qbws5dAXk9spVWd+f5RaUQMAwUNGvKO56QzkOyczcKU1nLz8o+FPZGvaNWSi2u9PQi0EQJOCdOjCWWUvsi/oOPATF3au2AdALncWtTSS9v/XTwMplS/rYa1HiX2KxOsD/7/c7yCw9DubENL9TObMlchiE4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1629721369; h=Content-Type:Content-Transfer-Encoding:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=KSs0HmIcXdxBa6MSaQs2XRyJxFcvzCL/P4Nkm3yNLVc=; b=cLx1glQts4lQgqV/T+stFcQWj0hqN5jl3TAEMuniZyz8q2gNzjECmtIz9+N6drmX6cBGMOqSfaA9Z7CBcnboaC+7WwoXrPkrkbNJKJuQ9SgPvQk1816owsLGeOkw/bmdMIOXm0dLgZxR/CV5Y+wnmWAIThoUeGaBtayZp69iak4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.zohomail.com with SMTPS id 1629721369258982.677476072373; Mon, 23 Aug 2021 05:22:49 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-557-gFHzr8HzOzaH6FSRvt05PQ-1; Mon, 23 Aug 2021 08:22:46 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id ED6EB1082921; Mon, 23 Aug 2021 12:22:41 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7FA67189C7; Mon, 23 Aug 2021 12:22:40 +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 C7F8B1821888; Mon, 23 Aug 2021 12:22:38 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 17NCMbcc002343 for ; Mon, 23 Aug 2021 08:22:37 -0400 Received: by smtp.corp.redhat.com (Postfix) id 467B35F707; Mon, 23 Aug 2021 12:22:37 +0000 (UTC) Received: from speedmetal.redhat.com (unknown [10.40.208.33]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9BA935C232 for ; Mon, 23 Aug 2021 12:22:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1629721368; h=from:from:sender:sender: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:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=KSs0HmIcXdxBa6MSaQs2XRyJxFcvzCL/P4Nkm3yNLVc=; b=XasOp3/+qEH9OKC/5WPec6i9H9yV3XMimIygXWUp+h2aDLomHAlUxgpt+ARtrXt4X7Rz9W /dclplGeIhgTGtLKLF+GoEddZ3Ld6hPIgpFljxogqgJec1o6pLr3diwQWQgfvZmlFohF9Y meXWv+eNddkLeluFlqQSw4Qdu46yD4E= X-MC-Unique: gFHzr8HzOzaH6FSRvt05PQ-1 From: Peter Krempa To: libvir-list@redhat.com Subject: [PATCH] conf: snapshot/checkpoint: Rewrite 'AlignDisk' logic to appease clang Date: Mon, 23 Aug 2021 14:22:32 +0200 Message-Id: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com 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: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1629721370104100001 Content-Type: text/plain; charset="utf-8" New clang has a false-positive about value of 'olddisks' being unused after being set. This is clearly wrong because we want to use 'g_autofree' to clear it later. While I'm against modifying good code for the sake of bad static analysis in this case it's not obvious that we depend on the lifetime of 'olddisks' being needed until the end of the function as we store pointers into it into the hash table and later copy them out. Rewrite the code by assigning to 'olddisks' earlier and then using 'olddisks' in the loop, so it's clear where the lifetime of the objects ends, and this should also silence the warning. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/conf/checkpoint_conf.c | 14 ++++++++------ src/conf/snapshot_conf.c | 14 ++++++++------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/conf/checkpoint_conf.c b/src/conf/checkpoint_conf.c index 4731f21aba..175a95fed7 100644 --- a/src/conf/checkpoint_conf.c +++ b/src/conf/checkpoint_conf.c @@ -265,6 +265,7 @@ virDomainCheckpointAlignDisks(virDomainCheckpointDef *c= hkdef) virDomainDef *domdef =3D chkdef->parent.dom; g_autoptr(GHashTable) map =3D virHashNew(NULL); g_autofree virDomainCheckpointDiskDef *olddisks =3D NULL; + size_t oldndisks; size_t i; int checkpoint_default =3D VIR_DOMAIN_CHECKPOINT_TYPE_NONE; @@ -292,9 +293,14 @@ virDomainCheckpointAlignDisks(virDomainCheckpointDef *= chkdef) if (!chkdef->ndisks) checkpoint_default =3D VIR_DOMAIN_CHECKPOINT_TYPE_BITMAP; + olddisks =3D g_steal_pointer(&chkdef->disks); + oldndisks =3D chkdef->ndisks; + chkdef->disks =3D g_new0(virDomainCheckpointDiskDef, domdef->ndisks); + chkdef->ndisks =3D domdef->ndisks; + /* Double check requested disks. */ - for (i =3D 0; i < chkdef->ndisks; i++) { - virDomainCheckpointDiskDef *chkdisk =3D &chkdef->disks[i]; + for (i =3D 0; i < oldndisks; i++) { + virDomainCheckpointDiskDef *chkdisk =3D &olddisks[i]; virDomainDiskDef *domdisk =3D virDomainDiskByName(domdef, chkdisk-= >name, false); if (!domdisk) { @@ -328,10 +334,6 @@ virDomainCheckpointAlignDisks(virDomainCheckpointDef *= chkdef) } } - olddisks =3D g_steal_pointer(&chkdef->disks); - chkdef->disks =3D g_new0(virDomainCheckpointDiskDef, domdef->ndisks); - chkdef->ndisks =3D domdef->ndisks; - for (i =3D 0; i < domdef->ndisks; i++) { virDomainDiskDef *domdisk =3D domdef->disks[i]; virDomainCheckpointDiskDef *chkdisk =3D chkdef->disks + i; diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c index c765e4c815..fc6f0a859d 100644 --- a/src/conf/snapshot_conf.c +++ b/src/conf/snapshot_conf.c @@ -636,6 +636,7 @@ virDomainSnapshotAlignDisks(virDomainSnapshotDef *snapd= ef, virDomainDef *domdef =3D snapdef->parent.dom; g_autoptr(GHashTable) map =3D virHashNew(NULL); g_autofree virDomainSnapshotDiskDef *olddisks =3D NULL; + size_t oldndisks; size_t i; if (!domdef) { @@ -654,9 +655,14 @@ virDomainSnapshotAlignDisks(virDomainSnapshotDef *snap= def, if (!domdef->ndisks) return 0; + olddisks =3D g_steal_pointer(&snapdef->disks); + oldndisks =3D snapdef->ndisks; + snapdef->disks =3D g_new0(virDomainSnapshotDiskDef, domdef->ndisks); + snapdef->ndisks =3D domdef->ndisks; + /* Double check requested disks. */ - for (i =3D 0; i < snapdef->ndisks; i++) { - virDomainSnapshotDiskDef *snapdisk =3D &snapdef->disks[i]; + for (i =3D 0; i < oldndisks; i++) { + virDomainSnapshotDiskDef *snapdisk =3D &olddisks[i]; virDomainDiskDef *domdisk =3D virDomainDiskByName(domdef, snapdisk= ->name, false); if (!domdisk) { @@ -708,10 +714,6 @@ virDomainSnapshotAlignDisks(virDomainSnapshotDef *snap= def, } } - olddisks =3D g_steal_pointer(&snapdef->disks); - snapdef->disks =3D g_new0(virDomainSnapshotDiskDef, domdef->ndisks); - snapdef->ndisks =3D domdef->ndisks; - for (i =3D 0; i < domdef->ndisks; i++) { virDomainDiskDef *domdisk =3D domdef->disks[i]; virDomainSnapshotDiskDef *snapdisk =3D snapdef->disks + i; --=20 2.31.1