linuxkpi: Fix not-found case of linux_pci_find_irq_dev
Linux list_for_each_entry() does not neccessarily end with the iterator NULL (it may be an offset from NULL if the list member is not the first element of the member struct). Reported by: Coverity CID: 1366940 Reviewed by: hselasky@ Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D8780
This commit is contained in:
parent
ca311cf72b
commit
2f02a9e15a
@ -220,18 +220,19 @@ static inline struct device *
|
||||
linux_pci_find_irq_dev(unsigned int irq)
|
||||
{
|
||||
struct pci_dev *pdev;
|
||||
struct device *found;
|
||||
|
||||
found = NULL;
|
||||
spin_lock(&pci_lock);
|
||||
list_for_each_entry(pdev, &pci_devices, links) {
|
||||
if (irq == pdev->dev.irq)
|
||||
break;
|
||||
if (irq >= pdev->dev.msix && irq < pdev->dev.msix_max)
|
||||
if (irq == pdev->dev.irq ||
|
||||
(irq >= pdev->dev.msix && irq < pdev->dev.msix_max)) {
|
||||
found = &pdev->dev;
|
||||
break;
|
||||
}
|
||||
}
|
||||
spin_unlock(&pci_lock);
|
||||
if (pdev)
|
||||
return &pdev->dev;
|
||||
return (NULL);
|
||||
return (found);
|
||||
}
|
||||
|
||||
static inline unsigned long
|
||||
|
Loading…
x
Reference in New Issue
Block a user