diff options
Diffstat (limited to 'drivers/pci/hotplug/fakephp.c')
| -rw-r--r-- | drivers/pci/hotplug/fakephp.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/pci/hotplug/fakephp.c b/drivers/pci/hotplug/fakephp.c index 05a4f0f90186..e27907c91d92 100644 --- a/drivers/pci/hotplug/fakephp.c +++ b/drivers/pci/hotplug/fakephp.c | |||
| @@ -35,10 +35,10 @@ | |||
| 35 | #include <linux/kernel.h> | 35 | #include <linux/kernel.h> |
| 36 | #include <linux/module.h> | 36 | #include <linux/module.h> |
| 37 | #include <linux/pci.h> | 37 | #include <linux/pci.h> |
| 38 | #include <linux/pci_hotplug.h> | ||
| 38 | #include <linux/init.h> | 39 | #include <linux/init.h> |
| 39 | #include <linux/string.h> | 40 | #include <linux/string.h> |
| 40 | #include <linux/slab.h> | 41 | #include <linux/slab.h> |
| 41 | #include "pci_hotplug.h" | ||
| 42 | #include "../pci.h" | 42 | #include "../pci.h" |
| 43 | 43 | ||
| 44 | #if !defined(MODULE) | 44 | #if !defined(MODULE) |
| @@ -181,7 +181,9 @@ static void pci_rescan_slot(struct pci_dev *temp) | |||
| 181 | 181 | ||
| 182 | if (!pci_read_config_byte(temp, PCI_HEADER_TYPE, &hdr_type)) { | 182 | if (!pci_read_config_byte(temp, PCI_HEADER_TYPE, &hdr_type)) { |
| 183 | temp->hdr_type = hdr_type & 0x7f; | 183 | temp->hdr_type = hdr_type & 0x7f; |
| 184 | if (!pci_find_slot(bus->number, temp->devfn)) { | 184 | if ((dev = pci_get_slot(bus, temp->devfn)) != NULL) |
| 185 | pci_dev_put(dev); | ||
| 186 | else { | ||
| 185 | dev = pci_scan_single_device(bus, temp->devfn); | 187 | dev = pci_scan_single_device(bus, temp->devfn); |
| 186 | if (dev) { | 188 | if (dev) { |
| 187 | dbg("New device on %s function %x:%x\n", | 189 | dbg("New device on %s function %x:%x\n", |
| @@ -205,7 +207,9 @@ static void pci_rescan_slot(struct pci_dev *temp) | |||
| 205 | continue; | 207 | continue; |
| 206 | temp->hdr_type = hdr_type & 0x7f; | 208 | temp->hdr_type = hdr_type & 0x7f; |
| 207 | 209 | ||
| 208 | if (!pci_find_slot(bus->number, temp->devfn)) { | 210 | if ((dev = pci_get_slot(bus, temp->devfn)) != NULL) |
| 211 | pci_dev_put(dev); | ||
| 212 | else { | ||
| 209 | dev = pci_scan_single_device(bus, temp->devfn); | 213 | dev = pci_scan_single_device(bus, temp->devfn); |
| 210 | if (dev) { | 214 | if (dev) { |
| 211 | dbg("New device on %s function %x:%x\n", | 215 | dbg("New device on %s function %x:%x\n", |
| @@ -305,7 +309,7 @@ static int disable_slot(struct hotplug_slot *slot) | |||
| 305 | /* search for subfunctions and disable them first */ | 309 | /* search for subfunctions and disable them first */ |
| 306 | if (!(dslot->dev->devfn & 7)) { | 310 | if (!(dslot->dev->devfn & 7)) { |
| 307 | for (func = 1; func < 8; func++) { | 311 | for (func = 1; func < 8; func++) { |
| 308 | dev = pci_find_slot(dslot->dev->bus->number, | 312 | dev = pci_get_slot(dslot->dev->bus, |
| 309 | dslot->dev->devfn + func); | 313 | dslot->dev->devfn + func); |
| 310 | if (dev) { | 314 | if (dev) { |
| 311 | hslot = get_slot_from_dev(dev); | 315 | hslot = get_slot_from_dev(dev); |
| @@ -315,6 +319,7 @@ static int disable_slot(struct hotplug_slot *slot) | |||
| 315 | err("Hotplug slot not found for subfunction of PCI device\n"); | 319 | err("Hotplug slot not found for subfunction of PCI device\n"); |
| 316 | return -ENODEV; | 320 | return -ENODEV; |
| 317 | } | 321 | } |
| 322 | pci_dev_put(dev); | ||
| 318 | } else | 323 | } else |
| 319 | dbg("No device in slot found\n"); | 324 | dbg("No device in slot found\n"); |
| 320 | } | 325 | } |
