From nobody Sun May 5 01:07:06 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.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1493480183817719.975972435166; Sat, 29 Apr 2017 08:36:23 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 76EF346D0AD; Sat, 29 Apr 2017 15:36:21 +0000 (UTC) Received: from colo-mx.corp.redhat.com (unknown [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6CBCB5DD6A; Sat, 29 Apr 2017 15:36:20 +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 118434ED32; Sat, 29 Apr 2017 15:36:17 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v3TFaEK5027438 for ; Sat, 29 Apr 2017 11:36:14 -0400 Received: by smtp.corp.redhat.com (Postfix) id D59BF77707; Sat, 29 Apr 2017 15:36:14 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-116-16.phx2.redhat.com [10.3.116.16]) by smtp.corp.redhat.com (Postfix) with ESMTP id 931F760BE3 for ; Sat, 29 Apr 2017 15:36:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 76EF346D0AD Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 76EF346D0AD From: John Ferlan To: libvir-list@redhat.com Date: Sat, 29 Apr 2017 11:36:10 -0400 Message-Id: <20170429153610.23944-1-jferlan@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH] conf: Resolve corner case on fc_host deletion 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.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Sat, 29 Apr 2017 15:36:22 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" https://bugzilla.redhat.com/show_bug.cgi?id=3D1420740 Testing found an inventive way to cause an error at shutdown by providing t= he parent name for the fc host creation using the "same name" as the HBA. Since the code thus assumed the parent host name provided was the parent HBA and just extracted out the host number and sent that along to the vport_destroy this avoided checks made for equality. So just add the equality check to that path to resolve. Signed-off-by: John Ferlan --- src/conf/node_device_conf.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c index 85cfd83..3f995da 100644 --- a/src/conf/node_device_conf.c +++ b/src/conf/node_device_conf.c @@ -2127,17 +2127,25 @@ virNodeDeviceDeleteVport(virConnectPtr conn, goto cleanup; } =20 + if (virAsprintf(&scsi_host_name, "scsi_%s", name) < 0) + goto cleanup; + /* If at startup time we provided a parent, then use that to * get the parent_host value; otherwise, we have to determine * the parent scsi_host which we did not save at startup time */ if (fchost->parent) { + /* Someone provided a parent string at startup time that + * was the same as the scsi_host - meaning we have a pool + * backed to an HBA, so there won't be a vHBA to delete */ + if (STREQ(scsi_host_name, fchost->parent)) { + ret =3D 0; + goto cleanup; + } + if (virSCSIHostGetNumber(fchost->parent, &parent_host) < 0) goto cleanup; } else { - if (virAsprintf(&scsi_host_name, "scsi_%s", name) < 0) - goto cleanup; - if (!(vhba_parent =3D virNodeDeviceGetParentName(conn, scsi_host_n= ame))) goto cleanup; =20 --=20 2.9.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list