Now that we have pci_get_bus_and_slot we can do the job correctly. Note
that some of these calls intentionally leak a device - this is because
the device in question is always needed from boot to reboot.
Signed-off-by: Alan Cox <[email protected]>
diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.19-rc1-mm1/arch/alpha/kernel/pci.c linux-2.6.19-rc1-mm1/arch/alpha/kernel/pci.c
--- linux.vanilla-2.6.19-rc1-mm1/arch/alpha/kernel/pci.c 2006-10-13 15:06:13.000000000 +0100
+++ linux-2.6.19-rc1-mm1/arch/alpha/kernel/pci.c 2006-10-13 17:14:23.000000000 +0100
@@ -516,10 +516,11 @@
if (bus == 0 && dfn == 0) {
hose = pci_isa_hose;
} else {
- dev = pci_find_slot(bus, dfn);
+ dev = pci_get_bus_and_slot(bus, dfn);
if (!dev)
return -ENODEV;
hose = dev->sysdata;
+ pci_dev_put(dev);
}
}
diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.19-rc1-mm1/arch/alpha/kernel/sys_miata.c linux-2.6.19-rc1-mm1/arch/alpha/kernel/sys_miata.c
--- linux.vanilla-2.6.19-rc1-mm1/arch/alpha/kernel/sys_miata.c 2006-10-13 15:10:06.000000000 +0100
+++ linux-2.6.19-rc1-mm1/arch/alpha/kernel/sys_miata.c 2006-10-13 17:14:23.000000000 +0100
@@ -183,11 +183,15 @@
if((slot == 7) && (PCI_FUNC(dev->devfn) == 3)) {
u8 irq=0;
-
- if(pci_read_config_byte(pci_find_slot(dev->bus->number, dev->devfn & ~(7)), 0x40,&irq)!=PCIBIOS_SUCCESSFUL)
+ struct pci_dev *pdev = pci_get_slot(dev->bus, dev->devfn & ~7);
+ if(pdev == NULL || pci_read_config_byte(pdev, 0x40,&irq) != PCIBIOS_SUCCESSFUL) {
+ pci_dev_put(pdev);
return -1;
- else
+ }
+ else {
+ pci_dev_put(pdev);
return irq;
+ }
}
return COMMON_TABLE_LOOKUP;
diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.19-rc1-mm1/arch/alpha/kernel/sys_nautilus.c linux-2.6.19-rc1-mm1/arch/alpha/kernel/sys_nautilus.c
--- linux.vanilla-2.6.19-rc1-mm1/arch/alpha/kernel/sys_nautilus.c 2006-10-13 15:10:06.000000000 +0100
+++ linux-2.6.19-rc1-mm1/arch/alpha/kernel/sys_nautilus.c 2006-10-13 17:14:23.000000000 +0100
@@ -200,7 +200,7 @@
bus = pci_scan_bus(0, alpha_mv.pci_ops, hose);
hose->bus = bus;
- irongate = pci_find_slot(0, 0);
+ irongate = pci_get_bus_and_slot(0, 0);
bus->self = irongate;
bus->resource[1] = &irongate_mem;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]