From nobody Thu Apr 25 06:29:13 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=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1520596592329538.2513381160653; Fri, 9 Mar 2018 03:56:32 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2D1735D5E9; Fri, 9 Mar 2018 11:56:31 +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 F2B5B5D77E; Fri, 9 Mar 2018 11:56:30 +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 B603C181B9FE; Fri, 9 Mar 2018 11:56:30 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w29BuIaV015790 for ; Fri, 9 Mar 2018 06:56:19 -0500 Received: by smtp.corp.redhat.com (Postfix) id D8E6310AF9C8; Fri, 9 Mar 2018 11:56:18 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.2.192]) by smtp.corp.redhat.com (Postfix) with ESMTP id 804721007279 for ; Fri, 9 Mar 2018 11:56:18 +0000 (UTC) From: Michal Privoznik To: libvir-list@redhat.com Date: Fri, 9 Mar 2018 12:56:11 +0100 Message-Id: <6f788b72a90ff9258440b0430918dd9791e622ef.1520596352.git.mprivozn@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 1/3] virDomainDeviceValidateAliasForHotplug: Use correct domain defintion 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.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Fri, 09 Mar 2018 11:56:31 +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=3D1553075 For some weird reason this function is getting live and persistent def for domain but then accesses vm->def and vm->newDef directly. This is rather unsafe as we can be accessing NULL pointer. Signed-off-by: Michal Privoznik --- src/conf/domain_conf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 70b19311b..b98b1ca42 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -5679,11 +5679,11 @@ virDomainDeviceValidateAliasForHotplug(virDomainObj= Ptr vm, return -1; =20 if (persDef && - virDomainDeviceValidateAliasImpl(vm->def, dev) < 0) + virDomainDeviceValidateAliasImpl(persDef, dev) < 0) return -1; =20 if (liveDef && - virDomainDeviceValidateAliasImpl(vm->newDef, dev) < 0) + virDomainDeviceValidateAliasImpl(liveDef, dev) < 0) return -1; =20 return 0; --=20 2.16.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu Apr 25 06:29:13 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=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1520596596344413.7757998433523; Fri, 9 Mar 2018 03:56:36 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D31A0C044CB9; Fri, 9 Mar 2018 11:56:34 +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 B048C5D784; Fri, 9 Mar 2018 11:56:34 +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 64F85181BA01; Fri, 9 Mar 2018 11:56:34 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w29BuJ1Z015795 for ; Fri, 9 Mar 2018 06:56:19 -0500 Received: by smtp.corp.redhat.com (Postfix) id 75E7410AF9C8; Fri, 9 Mar 2018 11:56:19 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.2.192]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1DA061007279 for ; Fri, 9 Mar 2018 11:56:18 +0000 (UTC) From: Michal Privoznik To: libvir-list@redhat.com Date: Fri, 9 Mar 2018 12:56:12 +0100 Message-Id: <70cf63eb169fe08319722bf2b4c9ba8eb7a4c0c5.1520596352.git.mprivozn@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 2/3] conf: Check for user aliases duplicates only 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.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Fri, 09 Mar 2018 11:56:35 +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=3D1553162 When validating a device XML config we check if user provided alias is unique. We do this by maintaining a hash table of device aliases as we iterated over all devices defined for the domain. However, it may happen that what appears as two devices in domain XML is in fact just one interface in hypervisor. For instance in qemu driver this is true for uhci/ehci controllers. In that case an error is reported even though it is not actually an error. At any rate, we can assume libvirt generated aliases to be unique and thus really check user provided ones only. Signed-off-by: Michal Privoznik --- src/conf/domain_conf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index b98b1ca42..04a6ee77a 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -5573,7 +5573,7 @@ virDomainDeviceDefValidateAliasesIterator(virDomainDe= fPtr def, struct virDomainDefValidateAliasesData *data =3D opaque; const char *alias =3D info->alias; =20 - if (!alias) + if (!alias || !virDomainDeviceAliasIsUserAlias(alias)) return 0; =20 /* Some crazy backcompat for consoles. */ --=20 2.16.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu Apr 25 06:29:13 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=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1520596583971841.565397765147; Fri, 9 Mar 2018 03:56:23 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8F00CC00F7C0; Fri, 9 Mar 2018 11:56:22 +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 580E06A046; Fri, 9 Mar 2018 11:56:22 +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 EF4BF181B9FB; Fri, 9 Mar 2018 11:56:21 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w29BuKpW015806 for ; Fri, 9 Mar 2018 06:56:20 -0500 Received: by smtp.corp.redhat.com (Postfix) id 13CD71007279; Fri, 9 Mar 2018 11:56:20 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.2.192]) by smtp.corp.redhat.com (Postfix) with ESMTP id AF27010AF9D3 for ; Fri, 9 Mar 2018 11:56:19 +0000 (UTC) From: Michal Privoznik To: libvir-list@redhat.com Date: Fri, 9 Mar 2018 12:56:13 +0100 Message-Id: <7a43ba579877de9973018c46c579081cd872cbbb.1520596352.git.mprivozn@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 3/3] qemu: Forbid user aliases for USB controllers 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.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Fri, 09 Mar 2018 11:56:23 +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=3D1552127 These are bit different than other devices. Their alias also specify the name of the bus. For instance, if there are these 'joined' USB devices:
which translates to cmd line as: -device ich9-usb-ehci1,id=3Dua-myUSB,bus=3Dpci.0,addr=3D0x4.0x7 -device ich9-usb-uhci1,masterbus=3Dusb.0,firstport=3D0,bus=3Dpci.0,multif= unction=3Don,addr=3D0x4 The problem is that UHCI is still trying to serve 'usb.0' bus. Rather than trying to come up with some complicated algorithm to make everything work, lets forbid user aliases for USB controllers. Signed-off-by: Michal Privoznik --- src/qemu/qemu_domain.c | 20 +++++++++++++++++++- tests/qemuxml2argvdata/user-aliases-usb.xml | 19 +++++++++++++++++++ tests/qemuxml2argvdata/user-aliases.xml | 1 - tests/qemuxml2argvtest.c | 1 + 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 tests/qemuxml2argvdata/user-aliases-usb.xml diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index b55013de6..67c145493 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4565,6 +4565,21 @@ qemuDomainDeviceDefValidateControllerSATA(const virD= omainControllerDef *controll } =20 =20 +static int +qemuDomainDeviceDefValidateControllerUSB(const virDomainControllerDef *con= troller) +{ + if (controller->info.alias && + virDomainDeviceAliasIsUserAlias(controller->info.alias)) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("Providing user alias to USB " + "controllers is not supported yet")); + return -1; + } + + return 0; +} + + static int qemuDomainDeviceDefValidateController(const virDomainControllerDef *contro= ller, const virDomainDef *def, @@ -4602,10 +4617,13 @@ qemuDomainDeviceDefValidateController(const virDoma= inControllerDef *controller, qemuCaps); break; =20 + case VIR_DOMAIN_CONTROLLER_TYPE_USB: + ret =3D qemuDomainDeviceDefValidateControllerUSB(controller); + break; + case VIR_DOMAIN_CONTROLLER_TYPE_FDC: case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL: case VIR_DOMAIN_CONTROLLER_TYPE_CCID: - case VIR_DOMAIN_CONTROLLER_TYPE_USB: case VIR_DOMAIN_CONTROLLER_TYPE_LAST: break; } diff --git a/tests/qemuxml2argvdata/user-aliases-usb.xml b/tests/qemuxml2ar= gvdata/user-aliases-usb.xml new file mode 100644 index 000000000..6dade4572 --- /dev/null +++ b/tests/qemuxml2argvdata/user-aliases-usb.xml @@ -0,0 +1,19 @@ + + gentoo + a75aca4b-a02f-2bcb-4a91-c93cd848c34b + 4194304 + 4194304 + 4 + + hvm + + + + + /usr/bin/qemu-system-x86_64 + + +
+ + + diff --git a/tests/qemuxml2argvdata/user-aliases.xml b/tests/qemuxml2argvda= ta/user-aliases.xml index 52132a82d..6f1fed636 100644 --- a/tests/qemuxml2argvdata/user-aliases.xml +++ b/tests/qemuxml2argvdata/user-aliases.xml @@ -71,7 +71,6 @@
-
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 688846b9b..5758811b8 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -2965,6 +2965,7 @@ mymain(void) QEMU_CAPS_DEVICE_ISA_SERIAL, QEMU_CAPS_HDA_DUPLEX); DO_TEST("user-aliases2", QEMU_CAPS_DEVICE_IOH3420, QEMU_CAPS_ICH9_AHCI= ); + DO_TEST_PARSE_ERROR("user-aliases-usb", QEMU_CAPS_KVM); =20 if (getenv("LIBVIRT_SKIP_CLEANUP") =3D=3D NULL) virFileDeleteTree(fakerootdir); --=20 2.16.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list