From: Sameeh Jubran <sameeh@daynix.com>
To: qemu-devel@nongnu.org
Cc: Yan Vugenfirer <yan@daynix.com>,
Michael Roth <mdroth@linux.vnet.ibm.com>
Subject: [Qemu-devel] [PATCH 2/2] qga-win: fsinfo: pci-info: allow partial info
Date: Tue, 26 Jun 2018 18:10:38 +0300 [thread overview]
Message-ID: <20180626151038.24771-3-sameeh@daynix.com> (raw)
In-Reply-To: <20180626151038.24771-1-sameeh@daynix.com>
From: Sameeh Jubran <sjubran@redhat.com>
The call to SetupDiGetDeviceRegistryProperty might fail because the
value doesn't exist in the registry, in this case we shouldn't exit from
the loop but instead continue to look for other available values in the
registry and set this value as unavailable (-1).
Signed-off-by: Sameeh Jubran <sjubran@redhat.com>
---
qga/commands-win32.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index c5f1c884e1..55e460dee3 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -505,7 +505,8 @@ static GuestPCIAddress *get_pci_info(char *guid, Error **errp)
dev_info_data.cbSize = sizeof(SP_DEVINFO_DATA);
for (i = 0; SetupDiEnumDeviceInfo(dev_info, i, &dev_info_data); i++) {
- DWORD addr, bus, slot, func, dev, data, size2;
+ DWORD addr, bus, slot, data, size2;
+ int func, dev;
while (!SetupDiGetDeviceRegistryProperty(dev_info, &dev_info_data,
SPDRP_PHYSICAL_DEVICE_OBJECT_NAME,
&data, (PBYTE)buffer, size,
@@ -535,21 +536,21 @@ static GuestPCIAddress *get_pci_info(char *guid, Error **errp)
*/
if (!SetupDiGetDeviceRegistryProperty(dev_info, &dev_info_data,
SPDRP_BUSNUMBER, &data, (PBYTE)&bus, size, NULL)) {
- break;
+ bus = -1;
}
/* The function retrieves the device's address. This value will be
* transformed into device function and number */
if (!SetupDiGetDeviceRegistryProperty(dev_info, &dev_info_data,
SPDRP_ADDRESS, &data, (PBYTE)&addr, size, NULL)) {
- break;
+ addr = -1;
}
/* This call returns UINumber of DEVICE_CAPABILITIES structure.
* This number is typically a user-perceived slot number. */
if (!SetupDiGetDeviceRegistryProperty(dev_info, &dev_info_data,
SPDRP_UI_NUMBER, &data, (PBYTE)&slot, size, NULL)) {
- break;
+ slot = -1;
}
/* SetupApi gives us the same information as driver with
@@ -559,12 +560,12 @@ static GuestPCIAddress *get_pci_info(char *guid, Error **errp)
* DeviceNumber = (USHORT)(((propertyAddress) >> 16) & 0x0000FFFF);
* SPDRP_ADDRESS is propertyAddress, so we do the same.*/
- func = addr & 0x0000FFFF;
- dev = (addr >> 16) & 0x0000FFFF;
+ func = ((int) addr == -1) ? -1 : addr & 0x0000FFFF;
+ dev = ((int) addr == -1) ? -1 : (addr >> 16) & 0x0000FFFF;
pci->domain = dev;
- pci->slot = slot;
+ pci->slot = (int) slot;
pci->function = func;
- pci->bus = bus;
+ pci->bus = (int) bus;
break;
}
--
2.13.6
next prev parent reply other threads:[~2018-06-26 15:10 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-26 15:10 [Qemu-devel] [PATCH 0/2] prevent qga from crashing Sameeh Jubran
2018-06-26 15:10 ` [Qemu-devel] [PATCH 1/2] qga-win: prevent crash when executing fsinfo command Sameeh Jubran
2018-06-26 16:11 ` Philippe Mathieu-Daudé
2018-06-28 21:44 ` Eric Blake
2018-06-28 23:33 ` Sameeh Jubran
2018-07-09 22:58 ` Michael Roth
2018-07-16 11:42 ` Sameeh Jubran
2018-06-26 15:10 ` Sameeh Jubran [this message]
2018-07-16 20:04 ` [Qemu-devel] [PATCH 2/2] qga-win: fsinfo: pci-info: allow partial info Michael Roth
2018-07-17 7:58 ` Sameeh Jubran
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180626151038.24771-3-sameeh@daynix.com \
--to=sameeh@daynix.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=yan@daynix.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).