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>
This commit is contained in:
parent
917726611e
commit
2f21b8d431
@ -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 &&
|
if (pbdev->msix.available && pbdev->msix.table_bar == pcias &&
|
||||||
offset >= pbdev->msix.table_offset &&
|
offset >= pbdev->msix.table_offset &&
|
||||||
offset <= pbdev->msix.table_offset +
|
offset < (pbdev->msix.table_offset +
|
||||||
(pbdev->msix.entries - 1) * PCI_MSIX_ENTRY_SIZE) {
|
pbdev->msix.entries * PCI_MSIX_ENTRY_SIZE)) {
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user