aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/mxs
diff options
context:
space:
mode:
authorJulia Lawall <julia@diku.dk>2011-10-18 11:06:39 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-10-22 05:46:35 -0400
commit226d0f22d044f0151287bb7cf334b85182248f0e (patch)
treec85786a71a405d3c1a1c0d96a685d460d9d649d5 /sound/soc/mxs
parent33cb92cff9568dd9feb2825bd3605bf099bc6b63 (diff)
ASoC: keep pointer to resource so it can be freed
Add a new variable for storing resources accessed subsequent to the one accessed using request_mem_region, so the one accessed using request_mem_region can be released if needed. The resource variable names are also changed to be more descriptive. This code is also missing some calls to iounmap. The semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @r@ expression E, E1; identifier f; statement S1,S2,S3; @@ if (E == NULL) { ... when != if (E == NULL || ...) S1 else S2 when != E = E1 *E->f ... when any return ...; } else S3 // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/mxs')
-rw-r--r--sound/soc/mxs/mxs-saif.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/sound/soc/mxs/mxs-saif.c b/sound/soc/mxs/mxs-saif.c
index 401944cf4560..76dc74d24fc2 100644
--- a/sound/soc/mxs/mxs-saif.c
+++ b/sound/soc/mxs/mxs-saif.c
@@ -617,7 +617,7 @@ static irqreturn_t mxs_saif_irq(int irq, void *dev_id)
617 617
618static int mxs_saif_probe(struct platform_device *pdev) 618static int mxs_saif_probe(struct platform_device *pdev)
619{ 619{
620 struct resource *res; 620 struct resource *iores, *dmares;
621 struct mxs_saif *saif; 621 struct mxs_saif *saif;
622 struct mxs_saif_platform_data *pdata; 622 struct mxs_saif_platform_data *pdata;
623 int ret = 0; 623 int ret = 0;
@@ -655,35 +655,36 @@ static int mxs_saif_probe(struct platform_device *pdev)
655 goto failed_clk; 655 goto failed_clk;
656 } 656 }
657 657
658 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 658 iores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
659 if (!res) { 659 if (!iores) {
660 ret = -ENODEV; 660 ret = -ENODEV;
661 dev_err(&pdev->dev, "failed to get io resource: %d\n", 661 dev_err(&pdev->dev, "failed to get io resource: %d\n",
662 ret); 662 ret);
663 goto failed_get_resource; 663 goto failed_get_resource;
664 } 664 }
665 665
666 if (!request_mem_region(res->start, resource_size(res), "mxs-saif")) { 666 if (!request_mem_region(iores->start, resource_size(iores),
667 "mxs-saif")) {
667 dev_err(&pdev->dev, "request_mem_region failed\n"); 668 dev_err(&pdev->dev, "request_mem_region failed\n");
668 ret = -EBUSY; 669 ret = -EBUSY;
669 goto failed_get_resource; 670 goto failed_get_resource;
670 } 671 }
671 672
672 saif->base = ioremap(res->start, resource_size(res)); 673 saif->base = ioremap(iores->start, resource_size(iores));
673 if (!saif->base) { 674 if (!saif->base) {
674 dev_err(&pdev->dev, "ioremap failed\n"); 675 dev_err(&pdev->dev, "ioremap failed\n");
675 ret = -ENODEV; 676 ret = -ENODEV;
676 goto failed_ioremap; 677 goto failed_ioremap;
677 } 678 }
678 679
679 res = platform_get_resource(pdev, IORESOURCE_DMA, 0); 680 dmares = platform_get_resource(pdev, IORESOURCE_DMA, 0);
680 if (!res) { 681 if (!dmares) {
681 ret = -ENODEV; 682 ret = -ENODEV;
682 dev_err(&pdev->dev, "failed to get dma resource: %d\n", 683 dev_err(&pdev->dev, "failed to get dma resource: %d\n",
683 ret); 684 ret);
684 goto failed_ioremap; 685 goto failed_ioremap;
685 } 686 }
686 saif->dma_param.chan_num = res->start; 687 saif->dma_param.chan_num = dmares->start;
687 688
688 saif->irq = platform_get_irq(pdev, 0); 689 saif->irq = platform_get_irq(pdev, 0);
689 if (saif->irq < 0) { 690 if (saif->irq < 0) {
@@ -742,7 +743,7 @@ failed_get_irq2:
742failed_get_irq1: 743failed_get_irq1:
743 iounmap(saif->base); 744 iounmap(saif->base);
744failed_ioremap: 745failed_ioremap:
745 release_mem_region(res->start, resource_size(res)); 746 release_mem_region(iores->start, resource_size(iores));
746failed_get_resource: 747failed_get_resource:
747 clk_put(saif->clk); 748 clk_put(saif->clk);
748failed_clk: 749failed_clk: