From a8ce0f01a416e6cf17423f8a4fea469659f9eae5 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 1 Nov 2007 19:41:16 -0700 Subject: [PATCH] --- yaml --- r: 75827 b: refs/heads/master c: b249072ee6897fe4f8d461c7bb4b926223263c28 h: refs/heads/master i: 75825: 1dfc6ea864b7ce3799987e1004a26800945b579e 75823: ee821f6dac463114ad2fe214046f689878021b00 v: v3 --- [refs] | 2 +- trunk/drivers/base/bus.c | 6 ++++++ trunk/drivers/pci/probe.c | 11 +++++++---- trunk/include/linux/device.h | 1 + 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 2e5a98cb1265..3ad1f4e13d91 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0fed80f7a63abd7168907267af69ee31f6bcf301 +refs/heads/master: b249072ee6897fe4f8d461c7bb4b926223263c28 diff --git a/trunk/drivers/base/bus.c b/trunk/drivers/base/bus.c index 8335a1079b0e..9c9027b2c44e 100644 --- a/trunk/drivers/base/bus.c +++ b/trunk/drivers/base/bus.c @@ -941,6 +941,12 @@ struct kset *bus_get_kset(struct bus_type *bus) } EXPORT_SYMBOL_GPL(bus_get_kset); +struct klist *bus_get_device_klist(struct bus_type *bus) +{ + return &bus->klist_devices; +} +EXPORT_SYMBOL_GPL(bus_get_device_klist); + int __init buses_init(void) { bus_kset = kset_create_and_add("bus", &bus_uevent_ops, NULL); diff --git a/trunk/drivers/pci/probe.c b/trunk/drivers/pci/probe.c index c5ca3134513a..5fd585293e79 100644 --- a/trunk/drivers/pci/probe.c +++ b/trunk/drivers/pci/probe.c @@ -1210,16 +1210,19 @@ static void __init pci_sort_breadthfirst_klist(void) struct klist_node *n; struct device *dev; struct pci_dev *pdev; + struct klist *device_klist; - spin_lock(&pci_bus_type.klist_devices.k_lock); - list_for_each_safe(pos, tmp, &pci_bus_type.klist_devices.k_list) { + device_klist = bus_get_device_klist(&pci_bus_type); + + spin_lock(&device_klist->k_lock); + list_for_each_safe(pos, tmp, &device_klist->k_list) { n = container_of(pos, struct klist_node, n_node); dev = container_of(n, struct device, knode_bus); pdev = to_pci_dev(dev); pci_insertion_sort_klist(pdev, &sorted_devices); } - list_splice(&sorted_devices, &pci_bus_type.klist_devices.k_list); - spin_unlock(&pci_bus_type.klist_devices.k_lock); + list_splice(&sorted_devices, &device_klist->k_list); + spin_unlock(&device_klist->k_lock); } static void __init pci_insertion_sort_devices(struct pci_dev *a, struct list_head *list) diff --git a/trunk/include/linux/device.h b/trunk/include/linux/device.h index 3cc13c32314a..62e695bd3c93 100644 --- a/trunk/include/linux/device.h +++ b/trunk/include/linux/device.h @@ -118,6 +118,7 @@ extern int bus_unregister_notifier(struct bus_type *bus, unbound */ extern struct kset *bus_get_kset(struct bus_type *bus); +extern struct klist *bus_get_device_klist(struct bus_type *bus); struct device_driver { const char * name;