aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-03-13 16:16:22 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-03-13 16:16:22 -0400
commitebe168d52c6255cfaf701b488e9e9ed0f548da19 (patch)
tree7f81320e09983d749bc38047857563f7fd269480
parentb15a3891c916f32a29832886a053a48be2741d4d (diff)
parentcc74d96f47b0d916840f92092595e3be9731e047 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6: PCI: fix issue with busses registering multiple times in sysfs
-rw-r--r--drivers/pci/bus.c6
-rw-r--r--include/linux/pci.h1
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c
index 6a9403d79e0c..d708358326e5 100644
--- a/drivers/pci/bus.c
+++ b/drivers/pci/bus.c
@@ -143,14 +143,18 @@ void pci_bus_add_devices(struct pci_bus *bus)
143 /* register the bus with sysfs as the parent is now 143 /* register the bus with sysfs as the parent is now
144 * properly registered. */ 144 * properly registered. */
145 child_bus = dev->subordinate; 145 child_bus = dev->subordinate;
146 if (child_bus->is_added)
147 continue;
146 child_bus->dev.parent = child_bus->bridge; 148 child_bus->dev.parent = child_bus->bridge;
147 retval = device_register(&child_bus->dev); 149 retval = device_register(&child_bus->dev);
148 if (retval) 150 if (retval)
149 dev_err(&dev->dev, "Error registering pci_bus," 151 dev_err(&dev->dev, "Error registering pci_bus,"
150 " continuing...\n"); 152 " continuing...\n");
151 else 153 else {
154 child_bus->is_added = 1;
152 retval = device_create_file(&child_bus->dev, 155 retval = device_create_file(&child_bus->dev,
153 &dev_attr_cpuaffinity); 156 &dev_attr_cpuaffinity);
157 }
154 if (retval) 158 if (retval)
155 dev_err(&dev->dev, "Error creating cpuaffinity" 159 dev_err(&dev->dev, "Error creating cpuaffinity"
156 " file, continuing...\n"); 160 " file, continuing...\n");
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 38eff1947750..9010f5458767 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -278,6 +278,7 @@ struct pci_bus {
278 struct device dev; 278 struct device dev;
279 struct bin_attribute *legacy_io; /* legacy I/O for this bus */ 279 struct bin_attribute *legacy_io; /* legacy I/O for this bus */
280 struct bin_attribute *legacy_mem; /* legacy mem */ 280 struct bin_attribute *legacy_mem; /* legacy mem */
281 unsigned int is_added:1;
281}; 282};
282 283
283#define pci_bus_b(n) list_entry(n, struct pci_bus, node) 284#define pci_bus_b(n) list_entry(n, struct pci_bus, node)