msix: assert that accesses are within bounds
This makes the testcase from the next patch fail. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
c9ca89a907
commit
58cf0f86d4
@ -179,6 +179,7 @@ static uint64_t msix_table_mmio_read(void *opaque, hwaddr addr,
|
|||||||
{
|
{
|
||||||
PCIDevice *dev = opaque;
|
PCIDevice *dev = opaque;
|
||||||
|
|
||||||
|
assert(addr + size <= dev->msix_entries_nr * PCI_MSIX_ENTRY_SIZE);
|
||||||
return pci_get_long(dev->msix_table + addr);
|
return pci_get_long(dev->msix_table + addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -189,6 +190,8 @@ static void msix_table_mmio_write(void *opaque, hwaddr addr,
|
|||||||
int vector = addr / PCI_MSIX_ENTRY_SIZE;
|
int vector = addr / PCI_MSIX_ENTRY_SIZE;
|
||||||
bool was_masked;
|
bool was_masked;
|
||||||
|
|
||||||
|
assert(addr + size <= dev->msix_entries_nr * PCI_MSIX_ENTRY_SIZE);
|
||||||
|
|
||||||
was_masked = msix_is_masked(dev, vector);
|
was_masked = msix_is_masked(dev, vector);
|
||||||
pci_set_long(dev->msix_table + addr, val);
|
pci_set_long(dev->msix_table + addr, val);
|
||||||
msix_handle_mask_update(dev, vector, was_masked);
|
msix_handle_mask_update(dev, vector, was_masked);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user