projects/linux·commit ebe168d5

Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6

ebe168d5 · Linus Torvalds <[email protected]> · 2008-03-13 13:16:22 -07:00

* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6:
  PCI: fix issue with busses registering multiple times in sysfs
Commit
ebe168d52c6255cfaf701b488e9e9ed0f548da19
Parents
b15a3891 · cc74d96f

Merge commit. Changes below are compared with the first parent: b15a3891.

Changes

2 files changed · +6 −1

FileStatusAddDelContent
drivers/pci/bus.cmodified+5−1View file
include/linux/pci.hmodified+1−0View file

drivers/pci/bus.c

View file
diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c
index 6a9403d..d708358 100644
--- a/drivers/pci/bus.c
+++ b/drivers/pci/bus.c
@@ -143,14 +143,18 @@ void pci_bus_add_devices(struct pci_bus *bus)
/* register the bus with sysfs as the parent is now
* properly registered. */
child_bus = dev->subordinate;
+ if (child_bus->is_added)
+ continue;
child_bus->dev.parent = child_bus->bridge;
retval = device_register(&child_bus->dev);
if (retval)
dev_err(&dev->dev, "Error registering pci_bus,"
" continuing...\n");
- else
+ else {
+ child_bus->is_added = 1;
retval = device_create_file(&child_bus->dev,
&dev_attr_cpuaffinity);
+ }
if (retval)
dev_err(&dev->dev, "Error creating cpuaffinity"
" file, continuing...\n");

include/linux/pci.h

View file
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 38eff19..9010f54 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -278,6 +278,7 @@ struct pci_bus {
struct device dev;
struct bin_attribute *legacy_io; /* legacy I/O for this bus */
struct bin_attribute *legacy_mem; /* legacy mem */
+ unsigned int is_added:1;
};
#define pci_bus_b(n) list_entry(n, struct pci_bus, node)