svn commit: r310031 - head/sys/compat/linuxkpi/common/include/linux
Conrad E. Meyer
cem at FreeBSD.org
Tue Dec 13 19:58:22 UTC 2016
Author: cem
Date: Tue Dec 13 19:58:21 2016
New Revision: 310031
URL: https://svnweb.freebsd.org/changeset/base/310031
Log:
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
Modified:
head/sys/compat/linuxkpi/common/include/linux/pci.h
Modified: head/sys/compat/linuxkpi/common/include/linux/pci.h
==============================================================================
--- head/sys/compat/linuxkpi/common/include/linux/pci.h Tue Dec 13 19:36:05 2016 (r310030)
+++ head/sys/compat/linuxkpi/common/include/linux/pci.h Tue Dec 13 19:58:21 2016 (r310031)
@@ -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
More information about the svn-src-all
mailing list