PCI: Use list_for_each_entry() for bus->devices traversal
Replace list_for_each() + pci_dev_b() with the simpler list_for_each_entry(). Tested-by: Yijing Wang <wangyijing@huawei.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Yinghai Lu <yinghai@kernel.org>
This commit is contained in:
Родитель
125e14bb35
Коммит
66455f5472
|
@ -114,16 +114,17 @@ void pci_stop_and_remove_bus_device(struct pci_dev *dev)
|
|||
|
||||
static void __pci_remove_behind_bridge(struct pci_dev *dev)
|
||||
{
|
||||
struct list_head *l, *n;
|
||||
struct pci_dev *child, *tmp;
|
||||
|
||||
if (dev->subordinate)
|
||||
list_for_each_safe(l, n, &dev->subordinate->devices)
|
||||
__pci_remove_bus_device(pci_dev_b(l));
|
||||
list_for_each_entry_safe(child, tmp,
|
||||
&dev->subordinate->devices, bus_list)
|
||||
__pci_remove_bus_device(child);
|
||||
}
|
||||
|
||||
static void pci_stop_bus_devices(struct pci_bus *bus)
|
||||
{
|
||||
struct list_head *l, *n;
|
||||
struct pci_dev *dev, *tmp;
|
||||
|
||||
/*
|
||||
* VFs could be removed by pci_stop_and_remove_bus_device() in the
|
||||
|
@ -133,10 +134,8 @@ static void pci_stop_bus_devices(struct pci_bus *bus)
|
|||
* We can iterate the list backwards to get prev valid PF instead
|
||||
* of removed VF.
|
||||
*/
|
||||
list_for_each_prev_safe(l, n, &bus->devices) {
|
||||
struct pci_dev *dev = pci_dev_b(l);
|
||||
list_for_each_entry_safe_reverse(dev, tmp, &bus->devices, bus_list)
|
||||
pci_stop_bus_device(dev);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -130,16 +130,14 @@ pci_find_next_bus(const struct pci_bus *from)
|
|||
* decrement the reference count by calling pci_dev_put().
|
||||
* If no device is found, %NULL is returned.
|
||||
*/
|
||||
struct pci_dev * pci_get_slot(struct pci_bus *bus, unsigned int devfn)
|
||||
struct pci_dev *pci_get_slot(struct pci_bus *bus, unsigned int devfn)
|
||||
{
|
||||
struct list_head *tmp;
|
||||
struct pci_dev *dev;
|
||||
|
||||
WARN_ON(in_interrupt());
|
||||
down_read(&pci_bus_sem);
|
||||
|
||||
list_for_each(tmp, &bus->devices) {
|
||||
dev = pci_dev_b(tmp);
|
||||
list_for_each_entry(dev, &bus->devices, bus_list) {
|
||||
if (dev->devfn == devfn)
|
||||
goto out;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче