Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
[firefly-linux-kernel-4.4.55.git] / drivers / pci / xen-pcifront.c
index 1620088a0e7e34d6f11b6f6d347d9111fc60de9d..fd00ff02ab4d0c51cf7b6eabe6b2a5ce9880fb12 100644 (file)
@@ -544,7 +544,7 @@ static void free_root_bus_devs(struct pci_bus *bus)
                dev = container_of(bus->devices.next, struct pci_dev,
                                   bus_list);
                dev_dbg(&dev->dev, "removing device\n");
-               pci_remove_bus_device(dev);
+               pci_stop_and_remove_bus_device(dev);
        }
 }
 
@@ -593,7 +593,7 @@ static pci_ers_result_t pcifront_common_process(int cmd,
        }
        pdrv = pcidev->driver;
 
-       if (get_driver(&pdrv->driver)) {
+       if (pdrv) {
                if (pdrv->err_handler && pdrv->err_handler->error_detected) {
                        dev_dbg(&pcidev->dev,
                                "trying to call AER service\n");
@@ -623,7 +623,6 @@ static pci_ers_result_t pcifront_common_process(int cmd,
                                }
                        }
                }
-               put_driver(&pdrv->driver);
        }
        if (!flag)
                result = PCI_ERS_RESULT_NONE;
@@ -1045,7 +1044,7 @@ static int pcifront_detach_devices(struct pcifront_device *pdev)
                                domain, bus, slot, func);
                        continue;
                }
-               pci_remove_bus_device(pci_dev);
+               pci_stop_and_remove_bus_device(pci_dev);
                pci_dev_put(pci_dev);
 
                dev_dbg(&pdev->xdev->dev,