PCI: Drop pci_device_remove() test of pci_dev->driver
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Mon, 4 Oct 2021 12:59:25 +0000 (14:59 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 12 Oct 2021 22:37:15 +0000 (17:37 -0500)
When the driver core calls pci_device_remove(), there is a driver bound
to the device, so pci_dev->driver is never NULL.

Remove the unnecessary test of pci_dev->driver.

Link: https://lore.kernel.org/r/20211004125935.2300113-2-u.kleine-koenig@pengutronix.de
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
drivers/pci/pci-driver.c

index 2761ab86490d14bfa547180e36dbbc997e31f922..8fb6418c93e822be84bec29d09d1803739f9c8e1 100644 (file)
@@ -459,16 +459,14 @@ static void pci_device_remove(struct device *dev)
        struct pci_dev *pci_dev = to_pci_dev(dev);
        struct pci_driver *drv = pci_dev->driver;
 
-       if (drv) {
-               if (drv->remove) {
-                       pm_runtime_get_sync(dev);
-                       drv->remove(pci_dev);
-                       pm_runtime_put_noidle(dev);
-               }
-               pcibios_free_irq(pci_dev);
-               pci_dev->driver = NULL;
-               pci_iov_remove(pci_dev);
+       if (drv->remove) {
+               pm_runtime_get_sync(dev);
+               drv->remove(pci_dev);
+               pm_runtime_put_noidle(dev);
        }
+       pcibios_free_irq(pci_dev);
+       pci_dev->driver = NULL;
+       pci_iov_remove(pci_dev);
 
        /* Undo the runtime PM settings in local_pci_probe() */
        pm_runtime_put_sync(dev);