diff options
author | Yi Min Zhao <zyimin@linux.vnet.ibm.com> | 2017-08-28 10:04:44 +0200 |
---|---|---|
committer | Cornelia Huck <cohuck@redhat.com> | 2017-08-30 18:23:26 +0200 |
commit | 2f21b8d431030bcb7478ee9521bdfd3d0ef3901d (patch) | |
tree | 95071f15822b964ca66bc35c4592a51444154e82 /hw/s390x | |
parent | 917726611ef352593f7e3168741a1e33c81dba00 (diff) | |
download | qemu-2f21b8d431030bcb7478ee9521bdfd3d0ef3901d.zip qemu-2f21b8d431030bcb7478ee9521bdfd3d0ef3901d.tar.gz qemu-2f21b8d431030bcb7478ee9521bdfd3d0ef3901d.tar.bz2 |
s390x/pci: fixup trap_msix()
The function trap_msix() is to check if pcistg instruction would access
msix table entries. The correct boundary condition should be
[table_offset, table_offset+entries*entry_size). But the current
condition calculated misses the last entry. So let's fixup it.
Acked-by: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
Reviewed-by: Pierre Morel <pmorel@linux.vnet.ibm.com>
Signed-off-by: Yi Min Zhao <zyimin@linux.vnet.ibm.com>
Message-Id: <1503907487-2764-2-git-send-email-zyimin@linux.vnet.ibm.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Diffstat (limited to 'hw/s390x')
-rw-r--r-- | hw/s390x/s390-pci-inst.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index b7beb8c..eba9ffb 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -440,8 +440,8 @@ static int trap_msix(S390PCIBusDevice *pbdev, uint64_t offset, uint8_t pcias) { if (pbdev->msix.available && pbdev->msix.table_bar == pcias && offset >= pbdev->msix.table_offset && - offset <= pbdev->msix.table_offset + - (pbdev->msix.entries - 1) * PCI_MSIX_ENTRY_SIZE) { + offset < (pbdev->msix.table_offset + + pbdev->msix.entries * PCI_MSIX_ENTRY_SIZE)) { return 1; } else { return 0; |