Remove useless get_driver()/put_driver() calls
Alan Stern [Tue, 24 Jan 2012 18:35:24 +0000 (13:35 -0500)]
As part of the removal of get_driver()/put_driver(), this patch
(as1512) gets rid of various useless and unnecessary calls in several
drivers.  In some cases it may be desirable to pin the driver by
calling try_module_get(), but that can be done later.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: "David S. Miller" <davem@davemloft.net>
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
CC: Michael Buesch <m@bues.ch>
CC: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

drivers/net/phy/phy_device.c
drivers/pci/xen-pcifront.c
drivers/ssb/main.c
lib/dma-debug.c

index f320f46..e8c42d6 100644 (file)
@@ -915,9 +915,7 @@ static int phy_probe(struct device *dev)
 
        phydev = to_phy_device(dev);
 
-       /* Make sure the driver is held.
-        * XXX -- Is this correct? */
-       drv = get_driver(phydev->dev.driver);
+       drv = phydev->dev.driver;
        phydrv = to_phy_driver(drv);
        phydev->drv = phydrv;
 
@@ -957,8 +955,6 @@ static int phy_remove(struct device *dev)
 
        if (phydev->drv->remove)
                phydev->drv->remove(phydev);
-
-       put_driver(dev->driver);
        phydev->drv = NULL;
 
        return 0;
index 7cf3d2f..6f81998 100644 (file)
@@ -593,7 +593,7 @@ static pci_ers_result_t pcifront_common_process(int cmd,
        }
        pdrv = pcidev->driver;
 
-       if (get_driver(&pdrv->driver)) {
+       if (pdrv->driver) {
                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;
index bb6317f..ff109ae 100644 (file)
@@ -140,19 +140,6 @@ static void ssb_device_put(struct ssb_device *dev)
                put_device(dev->dev);
 }
 
-static inline struct ssb_driver *ssb_driver_get(struct ssb_driver *drv)
-{
-       if (drv)
-               get_driver(&drv->drv);
-       return drv;
-}
-
-static inline void ssb_driver_put(struct ssb_driver *drv)
-{
-       if (drv)
-               put_driver(&drv->drv);
-}
-
 static int ssb_device_resume(struct device *dev)
 {
        struct ssb_device *ssb_dev = dev_to_ssb_dev(dev);
@@ -250,11 +237,9 @@ int ssb_devices_freeze(struct ssb_bus *bus, struct ssb_freeze_context *ctx)
                        ssb_device_put(sdev);
                        continue;
                }
-               sdrv = ssb_driver_get(drv_to_ssb_drv(sdev->dev->driver));
-               if (!sdrv || SSB_WARN_ON(!sdrv->remove)) {
-                       ssb_device_put(sdev);
+               sdrv = drv_to_ssb_drv(sdev->dev->driver);
+               if (SSB_WARN_ON(!sdrv->remove))
                        continue;
-               }
                sdrv->remove(sdev);
                ctx->device_frozen[i] = 1;
        }
@@ -293,7 +278,6 @@ int ssb_devices_thaw(struct ssb_freeze_context *ctx)
                                   dev_name(sdev->dev));
                        result = err;
                }
-               ssb_driver_put(sdrv);
                ssb_device_put(sdev);
        }
 
index fea790a..13ef233 100644 (file)
@@ -170,7 +170,7 @@ static bool driver_filter(struct device *dev)
                return false;
 
        /* driver filter on but not yet initialized */
-       drv = get_driver(dev->driver);
+       drv = dev->driver;
        if (!drv)
                return false;
 
@@ -185,7 +185,6 @@ static bool driver_filter(struct device *dev)
        }
 
        read_unlock_irqrestore(&driver_name_lock, flags);
-       put_driver(drv);
 
        return ret;
 }