]> git.baikalelectronics.ru Git - kernel.git/commit
PCI/MSI: Fix pci_irq_vector()/pci_irq_get_affinity()
authorThomas Gleixner <tglx@linutronix.de>
Mon, 6 Dec 2021 22:27:26 +0000 (23:27 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 9 Dec 2021 10:52:20 +0000 (11:52 +0100)
commit2dfd616a5991ca3104ad02bd54f24d406daebc39
tree0fd7865df0cd98ebba12edf03623816e537d9a0b
parent7b75902ef8adcc4e44d851dace59bb9cb94e18fd
PCI/MSI: Fix pci_irq_vector()/pci_irq_get_affinity()

pci_irq_vector() and pci_irq_get_affinity() use the list position to find the
MSI-X descriptor at a given index. That's correct for the normal case where
the entry number is the same as the list position.

But it's wrong for cases where MSI-X was allocated with an entries array
describing sparse entry numbers into the hardware message descriptor
table. That's inconsistent at best.

Make it always check the entry number because that's what the zero base
index really means. This change won't break existing users which use a
sparse entries array for allocation because these users retrieve the Linux
interrupt number from the entries array after allocation and none of them
uses pci_irq_vector() or pci_irq_get_affinity().

Fixes: 004715ce8d98 ("PCI: Provide sensible IRQ vector alloc/free routines")
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://lore.kernel.org/r/20211206210223.929792157@linutronix.de
drivers/pci/msi.c