mirror of https://github.com/xemu-project/xemu.git
pci: sprinkle assert in PCI pin number
If a device model (a) doesn't set the value to a correct interrupt number and then (b) triggers an interrupt for itself, it's device model bug. Add assert on interrupt pin number to catch this kind of bug more obviously. Suggested-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com> Message-Id: <9cf8ac3b17e162daac0971d7be32deb6a33ae6ec.1616532563.git.isaku.yamahata@intel.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
44421c60c9
commit
8ddf543248
|
@ -1450,6 +1450,8 @@ static void pci_irq_handler(void *opaque, int irq_num, int level)
|
|||
PCIDevice *pci_dev = opaque;
|
||||
int change;
|
||||
|
||||
assert(0 <= irq_num && irq_num < PCI_NUM_PINS);
|
||||
assert(level == 0 || level == 1);
|
||||
change = level - pci_irq_state(pci_dev, irq_num);
|
||||
if (!change)
|
||||
return;
|
||||
|
@ -1469,6 +1471,7 @@ static inline int pci_intx(PCIDevice *pci_dev)
|
|||
qemu_irq pci_allocate_irq(PCIDevice *pci_dev)
|
||||
{
|
||||
int intx = pci_intx(pci_dev);
|
||||
assert(0 <= intx && intx < PCI_NUM_PINS);
|
||||
|
||||
return qemu_allocate_irq(pci_irq_handler, pci_dev, intx);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue