dma: mmp_pdma: refactor unlocking path in lookup_phy()
authorDaniel Mack <zonque@gmail.com>
Sat, 10 Aug 2013 16:52:16 +0000 (18:52 +0200)
committerVinod Koul <vinod.koul@intel.com>
Wed, 14 Aug 2013 08:25:15 +0000 (13:55 +0530)
As suggested by Ezequiel GarcĂ­a, release the spinlock at the end of the
function only, and use a goto for the control flow.

Just a minor cleanup.

Signed-off-by: Daniel Mack <zonque@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/mmp_pdma.c

index b061e2696728bb884112eb37760ada6f44ba4f31..3c2ad72a1621392a3c51e969a8d9dc4b9a6f9e17 100644 (file)
@@ -220,7 +220,7 @@ static struct mmp_pdma_phy *lookup_phy(struct mmp_pdma_chan *pchan)
 {
        int prio, i;
        struct mmp_pdma_device *pdev = to_mmp_pdma_dev(pchan->chan.device);
-       struct mmp_pdma_phy *phy;
+       struct mmp_pdma_phy *phy, *found = NULL;
        unsigned long flags;
 
        /*
@@ -239,14 +239,15 @@ static struct mmp_pdma_phy *lookup_phy(struct mmp_pdma_chan *pchan)
                        phy = &pdev->phy[i];
                        if (!phy->vchan) {
                                phy->vchan = pchan;
-                               spin_unlock_irqrestore(&pdev->phy_lock, flags);
-                               return phy;
+                               found = phy;
+                               goto out_unlock;
                        }
                }
        }
 
+out_unlock:
        spin_unlock_irqrestore(&pdev->phy_lock, flags);
-       return NULL;
+       return found;
 }
 
 static void mmp_pdma_free_phy(struct mmp_pdma_chan *pchan)