diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-03-13 16:16:22 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-03-13 16:16:22 -0400 |
commit | ebe168d52c6255cfaf701b488e9e9ed0f548da19 (patch) | |
tree | 7f81320e09983d749bc38047857563f7fd269480 | |
parent | b15a3891c916f32a29832886a053a48be2741d4d (diff) | |
parent | cc74d96f47b0d916840f92092595e3be9731e047 (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.c | 6 | ||||
-rw-r--r-- | include/linux/pci.h | 1 |
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) |