1
linux/drivers/pci/hotplug
Kenji Kaneshige a86161b313 pci hotplug core: add check of duplicate slot name
Fix the following errors reported by Jan C. Nordholz in
http://bugzilla.kernel.org/show_bug.cgi?id=10751.

kobject_add_internal failed for 2 with -EEXIST, don't try to register things with the same name in the same directory.
Pid: 1, comm: swapper Tainted: G        W 2.6.26-rc3 #1
 [<c0266980>] kobject_add_internal+0x140/0x190
 [<c0266afd>] kobject_init_and_add+0x2d/0x40
 [<c027bc91>] pci_hp_register+0x81/0x2f0
 [<c027fd07>] pciehp_probe+0x1a7/0x470
 [<c01b3b84>] sysfs_add_one+0x44/0xa0
 [<c01b3c1f>] sysfs_addrm_start+0x3f/0xb0
 [<c01b497a>] sysfs_create_link+0x8a/0xf0
 [<c0279570>] pcie_port_probe_service+0x50/0x80
 [<c02e0545>] driver_sysfs_add+0x55/0x70
 [<c02e0662>] driver_probe_device+0x82/0x180
 [<c02e07cc>] __driver_attach+0x6c/0x70
 [<c02dfe0a>] bus_for_each_dev+0x3a/0x60
 [<c05db2d0>] pcied_init+0x0/0x80
 [<c02e04e6>] driver_attach+0x16/0x20
 [<c02e0760>] __driver_attach+0x0/0x70
 [<c02e0341>] bus_add_driver+0x1a1/0x220
 [<c05db2d0>] pcied_init+0x0/0x80
 [<c02e09cd>] driver_register+0x4d/0x120
 [<c05db050>] ibm_acpiphp_init+0x0/0x190
 [<c0125aab>] printk+0x1b/0x20
 [<c05db2d0>] pcied_init+0x0/0x80
 [<c05db2de>] pcied_init+0xe/0x80
 [<c05c751a>] kernel_init+0x10a/0x300
 [<c0120138>] schedule_tail+0x18/0x50
 [<c0103b9a>] ret_from_fork+0x6/0x1c
 [<c05c7410>] kernel_init+0x0/0x300
 [<c05c7410>] kernel_init+0x0/0x300
 [<c010485b>] kernel_thread_helper+0x7/0x1c
 =======================
pci_hotplug: Unable to register kobject '2'<3>pciehp: pci_hp_register failed with error -22

Slot with the same name can be registered multiple times if shpchp or
pciehp driver is loaded after acpiphp is loaded because ACPI based
hotplug driver and Native OS hotplug driver trying to handle the same
physical slot. In this case, current pci_hotplug core will call
kobject_init_and_add() muliple time with the same name. This is the
cause of this problem. To fix this problem, this patch adds the check
into pci_hp_register() to see if the slot with the same name.

Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2008-05-27 15:43:40 -07:00
..
acpi_pcihp.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
acpiphp_core.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
acpiphp_glue.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
acpiphp_ibm.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
acpiphp.h PCI: hotplug: acpiphp: Remove unused variable from acpiphp 2008-02-01 15:04:20 -08:00
cpci_hotplug_core.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
cpci_hotplug_pci.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
cpci_hotplug.h
cpcihp_generic.c PCI Hotplug: make cpcihp driver use modern apis 2008-04-20 21:46:56 -07:00
cpcihp_zt5550.c PCI: ZT5550 CPCI Hotplug driver fix 2007-05-02 19:02:40 -07:00
cpcihp_zt5550.h
cpqphp_core.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
cpqphp_ctrl.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
cpqphp_nvram.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
cpqphp_nvram.h
cpqphp_pci.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
cpqphp_sysfs.c [PATCH] mark struct file_operations const 5 2007-02-12 09:48:45 -08:00
cpqphp.h PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
fakephp.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
ibmphp_core.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
ibmphp_ebda.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
ibmphp_hpc.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
ibmphp_pci.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
ibmphp_res.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
ibmphp.h PCI Hotplug: move pci_hotplug.h to include/linux/ 2006-10-18 11:36:12 -07:00
Kconfig PCI Hotplug: the ibm driver is not dependant on PCI_LEGACY 2008-04-20 21:46:57 -07:00
Makefile PCI: hotplug: Link fakephp last 2008-02-01 15:04:20 -08:00
pci_hotplug_core.c pci hotplug core: add check of duplicate slot name 2008-05-27 15:43:40 -07:00
pciehp_core.c pciehp: Fix wrong slot capability check 2008-04-25 14:39:06 -07:00
pciehp_ctrl.c pciehp: move msleep after power off 2008-05-27 15:43:33 -07:00
pciehp_hpc.c pciehp: move msleep after power off 2008-05-27 15:43:33 -07:00
pciehp_pci.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
pciehp.h pciehp: fix slow probing 2008-05-27 15:43:16 -07:00
pcihp_skeleton.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
rpadlpar_core.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
rpadlpar_sysfs.c Kobject: convert drivers/* from kobject_unregister() to kobject_put() 2008-01-24 20:40:40 -08:00
rpadlpar.h
rpaphp_core.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
rpaphp_pci.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
rpaphp_slot.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
rpaphp.h pci hotplug: fix rpaphp directory naming 2008-02-01 15:04:22 -08:00
sgi_hotplug.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
shpchp_core.c shpchp: add message about shpchp_slot_with_bus option 2008-05-27 15:42:55 -07:00
shpchp_ctrl.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
shpchp_hpc.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
shpchp_pci.c PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00
shpchp_sysfs.c
shpchp.h PCI: replace remaining __FUNCTION__ occurrences 2008-04-20 21:47:09 -07:00