From nobody Sun May 19 16:27:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603264771; cv=none; d=zohomail.com; s=zohoarc; b=nd+bl/F3InXwwJXFZdLqI5EJvyzNc6JBp+1Rc4N5Am/cNR4m13M7nEyxn7K8Zcq0KL0f/rBtlCnEXg3v6jMjuwyVMQBPW2C8hVTh4ESfGQUEAy0w3d9bnLjhMWfYd18cPkh/ijFz75XL35zbFlHS8jBbitlEEpMTgVo9sMKV7Hw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603264771; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=py4dCIAOe2HNi9oJ5WNPRqfKpIGOexZ50KvSEt9WNmE=; b=M7A2qulpxzUQPWTFecqYUQavKMp1Ig2dyK9nwlJEBTZV/jsrsXhBseUYVxsvvMJPGpNhJF0mwrAC7zLOWsvTIQmFYaWvLPg+y6fEzVDBdM/CLHVo+PwNvK1qnMQvgOAQUIVkMNuqn6PrxPghsY0Hr0hyGZblWR4jr/Kl8h/CM+M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603264771944152.79875277853603; Wed, 21 Oct 2020 00:19:31 -0700 (PDT) Received: from localhost ([::1]:58708 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kV8PD-0005Sc-AG for importer@patchew.org; Wed, 21 Oct 2020 03:19:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54444) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kV8LQ-0001sI-4c for qemu-devel@nongnu.org; Wed, 21 Oct 2020 03:15:37 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:57444) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kV8LK-0005gv-8J for qemu-devel@nongnu.org; Wed, 21 Oct 2020 03:15:35 -0400 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-374-4OJeCcAtOsCnUHpIYB1KRg-1; Wed, 21 Oct 2020 03:15:26 -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 02459107ACF7; Wed, 21 Oct 2020 07:15:25 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-182.ams2.redhat.com [10.36.112.182]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CB3265B4C0; Wed, 21 Oct 2020 07:15:21 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 1F57C11329AD; Wed, 21 Oct 2020 09:15:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603264528; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=py4dCIAOe2HNi9oJ5WNPRqfKpIGOexZ50KvSEt9WNmE=; b=eWfVsnhT+DCM+n2gfjHu88QSWY17UuXGer83MTomsfaqWB8bA4igbcKabWTn9I+N93vUvr hRtKX0vaftcU5wJB7WBrIw2KhpLyRt5RslurqCs8U4BirrkJKC+OFxffx/Yi6tQl1hPCOM pFRhpLPDVn0e2bg6nI7E3ldXtVGnIWM= X-MC-Unique: 4OJeCcAtOsCnUHpIYB1KRg-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 1/4] qga: Rename guest-get-devices return member 'address' to 'id' Date: Wed, 21 Oct 2020 09:15:17 +0200 Message-Id: <20201021071520.2168877-2-armbru@redhat.com> In-Reply-To: <20201021071520.2168877-1-armbru@redhat.com> References: <20201021071520.2168877-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/20 22:12:28 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, tgolembi@redhat.com, philmd@redhat.com, mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Member 'address' is union GuestDeviceAddress with a single branch GuestDeviceAddressPCI, containing PCI vendor ID and device ID. This is not a PCI address. Type GuestPCIAddress is. Messed up in recent commit 2e4211cee4 "qga: add command guest-get-devices for reporting VirtIO devices". Rename type GuestDeviceAddressPCI to GuestDeviceIdPCI, type GuestDeviceAddress to GuestDeviceId, and member 'address' to 'id'. Document the member properly while there. Signed-off-by: Markus Armbruster Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- qga/qapi-schema.json | 17 +++++++++-------- qga/commands-win32.c | 16 ++++++++-------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json index cec98c7e06..f2c81cda2b 100644 --- a/qga/qapi-schema.json +++ b/qga/qapi-schema.json @@ -1257,26 +1257,26 @@ 'returns': 'GuestOSInfo' } =20 ## -# @GuestDeviceAddressPCI: +# @GuestDeviceIdPCI: # # @vendor-id: vendor ID # @device-id: device ID # # Since: 5.2 ## -{ 'struct': 'GuestDeviceAddressPCI', +{ 'struct': 'GuestDeviceIdPCI', 'data': { 'vendor-id': 'uint16', 'device-id': 'uint16' } } =20 ## -# @GuestDeviceAddress: +# @GuestDeviceId: # -# Address of the device -# - @pci: address of PCI device, since: 5.2 +# Id of the device +# - @pci: PCI ID, since: 5.2 # # Since: 5.2 ## -{ 'union': 'GuestDeviceAddress', - 'data': { 'pci': 'GuestDeviceAddressPCI' } } +{ 'union': 'GuestDeviceId', + 'data': { 'pci': 'GuestDeviceIdPCI' } } =20 ## # @GuestDeviceInfo: @@ -1284,6 +1284,7 @@ # @driver-name: name of the associated driver # @driver-date: driver release date in format YYYY-MM-DD # @driver-version: driver version +# @id: device ID # # Since: 5.2 ## @@ -1292,7 +1293,7 @@ 'driver-name': 'str', '*driver-date': 'str', '*driver-version': 'str', - '*address': 'GuestDeviceAddress' + '*id': 'GuestDeviceId' } } =20 ## diff --git a/qga/commands-win32.c b/qga/commands-win32.c index 0c3c05484f..879b02b6c3 100644 --- a/qga/commands-win32.c +++ b/qga/commands-win32.c @@ -2390,22 +2390,22 @@ GuestDeviceInfoList *qmp_guest_get_devices(Error **= errp) } for (j =3D 0; hw_ids[j] !=3D NULL; j++) { GMatchInfo *match_info; - GuestDeviceAddressPCI *address; + GuestDeviceIdPCI *id; if (!g_regex_match(device_pci_re, hw_ids[j], 0, &match_info)) { continue; } skip =3D false; =20 - address =3D g_new0(GuestDeviceAddressPCI, 1); + id =3D g_new0(GuestDeviceIdPCI, 1); vendor_id =3D g_match_info_fetch(match_info, 1); device_id =3D g_match_info_fetch(match_info, 2); - address->vendor_id =3D g_ascii_strtoull(vendor_id, NULL, 16); - address->device_id =3D g_ascii_strtoull(device_id, NULL, 16); + id->vendor_id =3D g_ascii_strtoull(vendor_id, NULL, 16); + id->device_id =3D g_ascii_strtoull(device_id, NULL, 16); =20 - device->address =3D g_new0(GuestDeviceAddress, 1); - device->has_address =3D true; - device->address->type =3D GUEST_DEVICE_ADDRESS_KIND_PCI; - device->address->u.pci.data =3D address; + device->id =3D g_new0(GuestDeviceId, 1); + device->has_id =3D true; + device->id->type =3D GUEST_DEVICE_ID_KIND_PCI; + device->id->u.pci.data =3D id; =20 g_match_info_free(match_info); break; --=20 2.26.2 From nobody Sun May 19 16:27:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603264711; cv=none; d=zohomail.com; s=zohoarc; b=gjgAndrJycepZflULqEVfH+cyV0ZnY7uM+rOD0zWnKFzf0cA1dLfK8oi0GVCQxUElsWlwXa07urbFiaf5/nNIxEd8y6XoT2aBzH8NCr3KFGlGOkuwHf/fX6sEFSSCB215IwxGz119jx6WP/6eY59n+PxVAL3KFQxEvfT/8/Z194= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603264711; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=iDuljDkSH7vZAkqeSRivYSmD1ze7YjH/rNxVNhyCJTI=; b=lvFAf5GJqMZ9dM9S9zPuiLL7zEKZHDOtdvxgY6FPXqPe8YWjDuiAy5HQuBhkcwFiNvER3jb7nWQxEEpZqSgKuhkWwTW/dWey/ZvWsLclgcq6XTzcP9hWaju/XYLmyDFNd5Cd4SzLE8n/PM+noX99OuILaVXU7EiksXuEG4ETOD0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603264710965364.65745159518974; Wed, 21 Oct 2020 00:18:30 -0700 (PDT) Received: from localhost ([::1]:55982 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kV8OE-00048X-Ad for importer@patchew.org; Wed, 21 Oct 2020 03:18:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54416) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kV8LL-0001pi-BV for qemu-devel@nongnu.org; Wed, 21 Oct 2020 03:15:31 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:27238) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kV8LJ-0005gZ-8u for qemu-devel@nongnu.org; Wed, 21 Oct 2020 03:15:30 -0400 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-249-hp1ID66fO3mdJsKXxYib4w-1; Wed, 21 Oct 2020 03:15:25 -0400 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id 00B891009E26; Wed, 21 Oct 2020 07:15:25 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-182.ams2.redhat.com [10.36.112.182]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CB35810013D0; Wed, 21 Oct 2020 07:15:21 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 22718112991E; Wed, 21 Oct 2020 09:15:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603264527; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=iDuljDkSH7vZAkqeSRivYSmD1ze7YjH/rNxVNhyCJTI=; b=RHFrCKLBM+wUpoLMOGOPMf1FRfNLn/9OtZ8BJTvcl2m0TNXAhq/QhFCrJQ4wW3JPKiejia +5HFRB9C1XWecxvH2tP/DBQH4N1ErOEKSa0PQyXZuir8QdgF+WlhHWdwka3CNMHAi4z5yq pHDh6FcW9qzN7wTgHBYLbrEiNW8tEjg= X-MC-Unique: hp1ID66fO3mdJsKXxYib4w-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 2/4] qga: Use common time encoding for guest-get-devices 'driver-date' Date: Wed, 21 Oct 2020 09:15:18 +0200 Message-Id: <20201021071520.2168877-3-armbru@redhat.com> In-Reply-To: <20201021071520.2168877-1-armbru@redhat.com> References: <20201021071520.2168877-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/21 02:16:02 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, tgolembi@redhat.com, philmd@redhat.com, mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" guest-get-devices returns 'driver-date' as string in the format YYYY-MM-DD. Goes back to recent commit 2e4211cee4 "qga: add command guest-get-devices for reporting VirtIO devices". We should avoid use of multiple encodings for the same kind of data. Especially string encodings. Change it to return nanoseconds since the epoch, like guest-get-time does. Signed-off-by: Markus Armbruster Reviewed-by: Marc-Andr=C3=A9 Lureau --- qga/qapi-schema.json | 4 ++-- qga/commands-win32.c | 19 +++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json index f2c81cda2b..c7bfb8bf6a 100644 --- a/qga/qapi-schema.json +++ b/qga/qapi-schema.json @@ -1282,7 +1282,7 @@ # @GuestDeviceInfo: # # @driver-name: name of the associated driver -# @driver-date: driver release date in format YYYY-MM-DD +# @driver-date: driver release date, in nanoseconds since the epoch # @driver-version: driver version # @id: device ID # @@ -1291,7 +1291,7 @@ { 'struct': 'GuestDeviceInfo', 'data': { 'driver-name': 'str', - '*driver-date': 'str', + '*driver-date': 'int', '*driver-version': 'str', '*id': 'GuestDeviceId' } } diff --git a/qga/commands-win32.c b/qga/commands-win32.c index 879b02b6c3..b01616a992 100644 --- a/qga/commands-win32.c +++ b/qga/commands-win32.c @@ -1641,6 +1641,12 @@ out: return head; } =20 +static int64_t filetime_to_ns(const FILETIME *tf) +{ + return ((((int64_t)tf->dwHighDateTime << 32) | tf->dwLowDateTime) + - W32_FT_OFFSET) * 100; +} + int64_t qmp_guest_get_time(Error **errp) { SYSTEMTIME ts =3D {0}; @@ -1657,8 +1663,7 @@ int64_t qmp_guest_get_time(Error **errp) return -1; } =20 - return ((((int64_t)tf.dwHighDateTime << 32) | tf.dwLowDateTime) - - W32_FT_OFFSET) * 100; + return filetime_to_ns(&tf); } =20 void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp) @@ -2363,7 +2368,6 @@ GuestDeviceInfoList *qmp_guest_get_devices(Error **er= rp) slog("enumerating devices"); for (i =3D 0; SetupDiEnumDeviceInfo(dev_info, i, &dev_info_data); i++)= { bool skip =3D true; - SYSTEMTIME utc_date; g_autofree LPWSTR name =3D NULL; g_autofree LPFILETIME date =3D NULL; g_autofree LPWSTR version =3D NULL; @@ -2434,13 +2438,12 @@ GuestDeviceInfoList *qmp_guest_get_devices(Error **= errp) slog("failed to get driver date"); continue; } - FileTimeToSystemTime(date, &utc_date); - device->driver_date =3D g_strdup_printf("%04d-%02d-%02d", - utc_date.wYear, utc_date.wMonth, utc_date.wDay); + device->driver_date =3D filetime_to_ns(date); device->has_driver_date =3D true; =20 - slog("driver: %s\ndriver version: %s,%s\n", device->driver_name, - device->driver_date, device->driver_version); + slog("driver: %s\ndriver version: %" PRId64 ",%s\n", + device->driver_name, device->driver_date, + device->driver_version); item =3D g_new0(GuestDeviceInfoList, 1); item->value =3D g_steal_pointer(&device); if (!cur_item) { --=20 2.26.2 From nobody Sun May 19 16:27:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603264829; cv=none; d=zohomail.com; s=zohoarc; b=la0PlVF/MhSeDekyTz63rNqV5PpRGEKa/3YIE1Bh/nC81m3ilH3Fgg2zPWATZK6VlRMBFXFUQevcZ3nrIPe28GrPNJ6XXfPjbkUoOmLDJuFFNESB6HBLpvaG46x3knukAdjn+bcBSk2jlrplZTGoGtFlw2P4KTuzEyDAz2ap2bk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603264829; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=pqzFgVIyvY2SXetIJb9uisHev+QHSk1bJrGsA1GUim8=; b=nMmZyUrjhAbDqt1ihnVcA9FTPxPqHmN33DBFN2FEXTWgBfNswVammxq84UrebQragoApgy2hDWPjwM3UWN/5xNf8Uj5QbbLFFpnfSymmNKJ2utBzzoK8lRTPHp2+cCLjZWqLfYJJITYKAHTwIvg1dz+wxtmTomGchixH0j1ZpFI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603264829543227.64720823156688; Wed, 21 Oct 2020 00:20:29 -0700 (PDT) Received: from localhost ([::1]:60810 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kV8Q8-0006Mm-MK for importer@patchew.org; Wed, 21 Oct 2020 03:20:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54442) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kV8LN-0001rR-1I for qemu-devel@nongnu.org; Wed, 21 Oct 2020 03:15:37 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:20170) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kV8LJ-0005gx-Eo for qemu-devel@nongnu.org; Wed, 21 Oct 2020 03:15:32 -0400 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-259-vuWmYNGUOs-LzXCOB9_YRw-1; Wed, 21 Oct 2020 03:15:26 -0400 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id AA9AB879521; Wed, 21 Oct 2020 07:15:25 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-182.ams2.redhat.com [10.36.112.182]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CB4C075129; Wed, 21 Oct 2020 07:15:21 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 25A4411275C0; Wed, 21 Oct 2020 09:15:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603264528; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pqzFgVIyvY2SXetIJb9uisHev+QHSk1bJrGsA1GUim8=; b=JDaOIFUmIBpMPeS+huhyXdwGE6VcLJ8SCB12hPMeR11wfxa4z2qT1F0wF/J2vZz/Ylub8J iMEbUo3TYlDBYdM5d8g9YU9obRRQ6d+Dqp03IPkNXYKgZzcxvOYNGMojdQvrV+h6FiwWTc woD3hFvRH5kk8YAZ36MHuNLQYXfbNhs= X-MC-Unique: vuWmYNGUOs-LzXCOB9_YRw-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 3/4] qga-win: Fix guest-get-devices error API violations Date: Wed, 21 Oct 2020 09:15:19 +0200 Message-Id: <20201021071520.2168877-4-armbru@redhat.com> In-Reply-To: <20201021071520.2168877-1-armbru@redhat.com> References: <20201021071520.2168877-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/21 02:16:02 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, tgolembi@redhat.com, philmd@redhat.com, mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The Error ** argument must be NULL, &error_abort, &error_fatal, or a pointer to a variable containing NULL. Passing an argument of the latter kind twice without clearing it in between is wrong: if the first call sets an error, it no longer points to NULL for the second call. qmp_guest_get_devices() is wrong that way: it calls error_setg() in a loop. If no iteration fails, the function returns a value and sets no error. Okay. If exactly one iteration fails, the function returns a value and sets an error. Wrong. If multiple iterations fail, the function trips error_setv()'s assertion. Fix it to return immediately on error. Perhaps the failure to convert the driver version to UTF-8 should not be an error. We could simply not report the botched version string instead. Drop a superfluous continue while there. Signed-off-by: Markus Armbruster Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- qga/commands-win32.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/qga/commands-win32.c b/qga/commands-win32.c index b01616a992..1efe3ba076 100644 --- a/qga/commands-win32.c +++ b/qga/commands-win32.c @@ -2385,7 +2385,7 @@ GuestDeviceInfoList *qmp_guest_get_devices(Error **er= rp) device->driver_name =3D g_utf16_to_utf8(name, -1, NULL, NULL, NULL= ); if (device->driver_name =3D=3D NULL) { error_setg(errp, "conversion to utf8 failed (driver name)"); - continue; + return NULL; } slog("querying device: %s", device->driver_name); hw_ids =3D ga_get_hardware_ids(dev_info_data.DevInst); @@ -2428,7 +2428,7 @@ GuestDeviceInfoList *qmp_guest_get_devices(Error **er= rp) NULL, NULL); if (device->driver_version =3D=3D NULL) { error_setg(errp, "conversion to utf8 failed (driver version)"); - continue; + return NULL; } device->has_driver_version =3D true; =20 @@ -2452,7 +2452,6 @@ GuestDeviceInfoList *qmp_guest_get_devices(Error **er= rp) cur_item->next =3D item; cur_item =3D item; } - continue; } =20 if (dev_info !=3D INVALID_HANDLE_VALUE) { --=20 2.26.2 From nobody Sun May 19 16:27:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603264624; cv=none; d=zohomail.com; s=zohoarc; b=C2fdslUYf78RW193lJR3Kucgpwzoqj7wmnQaFVAhOhTNnGYpQ7dBprgcAsgRqrSZi/RgvVV/TQjxG5g9TdAxD0aog7jfzZu6Wem5WNqQQ5hy775jnvzRzay5pKKmhfg09D1aG+xcjGUAhozeKSLp26x91hSfCtbkwHjwMau2SDo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603264624; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=dDHWT3LVZt4bET4GFbrv3i92S8wPITXJGhA56WhlS1Q=; b=BTflWQu9R31MlbWv8LBZWmJn7BjIGcg/AYgG7S+KWumHZ7DYp4Zk82J42uPIjcsLjIyd/n6dxrB2ZJ62amf0gE7G4ujXfveMAbNLxTz9XisSyQMa3jpEatfx0u8lurupY/tSWI/pFkNKe37bqin9TZvV94yoFYQRSkaGaeeA/2U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603264624700658.4214703376831; Wed, 21 Oct 2020 00:17:04 -0700 (PDT) Received: from localhost ([::1]:52798 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kV8Mq-0002pb-0a for importer@patchew.org; Wed, 21 Oct 2020 03:17:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54440) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kV8LM-0001pt-8F for qemu-devel@nongnu.org; Wed, 21 Oct 2020 03:15:35 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:33714) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kV8LJ-0005gf-8t for qemu-devel@nongnu.org; Wed, 21 Oct 2020 03:15:31 -0400 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-523--PXdfOa1On2vTRTXIJykPw-1; Wed, 21 Oct 2020 03:15:25 -0400 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id C5315879535; Wed, 21 Oct 2020 07:15:24 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-182.ams2.redhat.com [10.36.112.182]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AF6406EF66; Wed, 21 Oct 2020 07:15:21 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 28E7A11275C2; Wed, 21 Oct 2020 09:15:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603264528; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dDHWT3LVZt4bET4GFbrv3i92S8wPITXJGhA56WhlS1Q=; b=DTHxONn6H73NdtS3uVJLN1lOXzfIt1gIWpPEGkjQfnOtF5Dr6uYDb26Z8/bP8C3ZWlMxaM yUBJoLqMBpUmRmEHDJrxy7N+RHeh6t9qg26iqOjDvxZz1YA4zIm2gJz/zuX48vI2Zgp9Dp yk2rCsJYrd7WXjJpdimkKIb+zaZRp9o= X-MC-Unique: -PXdfOa1On2vTRTXIJykPw-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 4/4] qga: Flatten simple union GuestDeviceId Date: Wed, 21 Oct 2020 09:15:20 +0200 Message-Id: <20201021071520.2168877-5-armbru@redhat.com> In-Reply-To: <20201021071520.2168877-1-armbru@redhat.com> References: <20201021071520.2168877-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/21 02:16:02 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, tgolembi@redhat.com, philmd@redhat.com, mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Simple unions are simpler than flat unions in the schema, but more complicated in C and on the QMP wire: there's extra indirection in C and extra nesting on the wire, both pointless. They should be avoided in new code. GuestDeviceId was recently added for guest-get-devices. Convert it to a flat union. Signed-off-by: Markus Armbruster Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- qga/qapi-schema.json | 8 ++++++++ qga/commands-win32.c | 9 ++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json index c7bfb8bf6a..fe10631e4c 100644 --- a/qga/qapi-schema.json +++ b/qga/qapi-schema.json @@ -1256,6 +1256,12 @@ { 'command': 'guest-get-osinfo', 'returns': 'GuestOSInfo' } =20 +## +# @GuestDeviceType: +## +{ 'enum': 'GuestDeviceType', + 'data': [ 'pci' ] } + ## # @GuestDeviceIdPCI: # @@ -1276,6 +1282,8 @@ # Since: 5.2 ## { 'union': 'GuestDeviceId', + 'base': { 'type': 'GuestDeviceType' }, + 'discriminator': 'type', 'data': { 'pci': 'GuestDeviceIdPCI' } } =20 ## diff --git a/qga/commands-win32.c b/qga/commands-win32.c index 1efe3ba076..0c33d48aaa 100644 --- a/qga/commands-win32.c +++ b/qga/commands-win32.c @@ -2400,16 +2400,15 @@ GuestDeviceInfoList *qmp_guest_get_devices(Error **= errp) } skip =3D false; =20 - id =3D g_new0(GuestDeviceIdPCI, 1); vendor_id =3D g_match_info_fetch(match_info, 1); device_id =3D g_match_info_fetch(match_info, 2); - id->vendor_id =3D g_ascii_strtoull(vendor_id, NULL, 16); - id->device_id =3D g_ascii_strtoull(device_id, NULL, 16); =20 device->id =3D g_new0(GuestDeviceId, 1); device->has_id =3D true; - device->id->type =3D GUEST_DEVICE_ID_KIND_PCI; - device->id->u.pci.data =3D id; + device->id->type =3D GUEST_DEVICE_TYPE_PCI; + id =3D &device->id->u.pci; + id->vendor_id =3D g_ascii_strtoull(vendor_id, NULL, 16); + id->device_id =3D g_ascii_strtoull(device_id, NULL, 16); =20 g_match_info_free(match_info); break; --=20 2.26.2