diff mbox

[stable-0.15,2/6] pci-assign: Fix PCI_EXP_FLAGS_TYPE shift

Message ID 1349806133-1916-3-git-send-email-afaerber@suse.de (mailing list archive)
State New, archived
Headers show

Commit Message

Andreas Färber Oct. 9, 2012, 6:08 p.m. UTC
From: Alex Williamson <alex.williamson@redhat.com>

Coverity found that we're doing (uint16_t)type & 0xf0 >> 8.
This is obviously always 0x0, so our attempt to filter out
some device types thinks everything is an endpoint.  Fix
shift amount.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
(cherry picked from commit b4eccd18591f3d639bc3c923e299b3c1241a0b3f)

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 hw/device-assignment.c |    2 +-
 1 Datei geändert, 1 Zeile hinzugefügt(+), 1 Zeile entfernt(-)
diff mbox

Patch

diff --git a/hw/device-assignment.c b/hw/device-assignment.c
index 177daa4..dc41bfd 100644
--- a/hw/device-assignment.c
+++ b/hw/device-assignment.c
@@ -1459,7 +1459,7 @@  static int assigned_device_pci_cap_init(PCIDevice *pci_dev)
         }
 
         type = pci_get_word(pci_dev->config + pos + PCI_EXP_FLAGS);
-        type = (type & PCI_EXP_FLAGS_TYPE) >> 8;
+        type = (type & PCI_EXP_FLAGS_TYPE) >> 4;
         if (type != PCI_EXP_TYPE_ENDPOINT &&
             type != PCI_EXP_TYPE_LEG_END && type != PCI_EXP_TYPE_RC_END) {
             fprintf(stderr,