Commit 3c92c57a authored by Ben Gardner's avatar Ben Gardner Committed by Greg Kroah-Hartman
Browse files

PCI: Fix pci_find_present



pci_find_present() is only matching the last item in the list of ids.

The break after the match is found only escapes the for loop, not the
while loop, so found gets reset to NULL on the next pass.

Signed-off-by: default avatarBen Gardner <gardner.ben@gmail.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent e3008ded
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -403,10 +403,11 @@ const struct pci_device_id *pci_find_present(const struct pci_device_id *ids)
	while (ids->vendor || ids->subvendor || ids->class_mask) {
		list_for_each_entry(dev, &pci_devices, global_list) {
			if ((found = pci_match_one_device(ids, dev)) != NULL)
				break;
				goto exit;
		}
		ids++;
	}
exit:
	up_read(&pci_bus_sem);
	return found;
}