lkml.org 
[lkml]   [2011]   [Oct]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 2/3] sound/soc/au1x: keep pointer to resource so it can be freed
Date
From: Julia Lawall <julia@diku.dk>

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 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>

---
sound/soc/au1x/psc-ac97.c | 14 +++++++-------
sound/soc/au1x/psc-i2s.c | 14 +++++++-------
2 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/sound/soc/au1x/psc-ac97.c b/sound/soc/au1x/psc-ac97.c
index 172eefd..62e5640 100644
--- a/sound/soc/au1x/psc-ac97.c
+++ b/sound/soc/au1x/psc-ac97.c
@@ -364,7 +364,7 @@ static const struct snd_soc_dai_driver au1xpsc_ac97_dai_template = {
static int __devinit au1xpsc_ac97_drvprobe(struct platform_device *pdev)
{
int ret;
- struct resource *r;
+ struct resource *r, *r1;
unsigned long sel;
struct au1xpsc_audio_data *wd;

@@ -388,15 +388,15 @@ static int __devinit au1xpsc_ac97_drvprobe(struct platform_device *pdev)
if (!wd->mmio)
goto out1;

- r = platform_get_resource(pdev, IORESOURCE_DMA, 0);
- if (!r)
+ r1 = platform_get_resource(pdev, IORESOURCE_DMA, 0);
+ if (!r1)
goto out2;
- wd->dmaids[SNDRV_PCM_STREAM_PLAYBACK] = r->start;
+ wd->dmaids[SNDRV_PCM_STREAM_PLAYBACK] = r1->start;

- r = platform_get_resource(pdev, IORESOURCE_DMA, 1);
- if (!r)
+ r1 = platform_get_resource(pdev, IORESOURCE_DMA, 1);
+ if (!r1)
goto out2;
- wd->dmaids[SNDRV_PCM_STREAM_CAPTURE] = r->start;
+ wd->dmaids[SNDRV_PCM_STREAM_CAPTURE] = r1->start;

/* configuration: max dma trigger threshold, enable ac97 */
wd->cfg = PSC_AC97CFG_RT_FIFO8 | PSC_AC97CFG_TT_FIFO8 |
diff --git a/sound/soc/au1x/psc-i2s.c b/sound/soc/au1x/psc-i2s.c
index 7c5ae92..621e260 100644
--- a/sound/soc/au1x/psc-i2s.c
+++ b/sound/soc/au1x/psc-i2s.c
@@ -290,7 +290,7 @@ static const struct snd_soc_dai_driver au1xpsc_i2s_dai_template = {

static int __devinit au1xpsc_i2s_drvprobe(struct platform_device *pdev)
{
- struct resource *r;
+ struct resource *r, *r1;
unsigned long sel;
int ret;
struct au1xpsc_audio_data *wd;
@@ -313,15 +313,15 @@ static int __devinit au1xpsc_i2s_drvprobe(struct platform_device *pdev)
if (!wd->mmio)
goto out1;

- r = platform_get_resource(pdev, IORESOURCE_DMA, 0);
- if (!r)
+ r1 = platform_get_resource(pdev, IORESOURCE_DMA, 0);
+ if (!r1)
goto out2;
- wd->dmaids[SNDRV_PCM_STREAM_PLAYBACK] = r->start;
+ wd->dmaids[SNDRV_PCM_STREAM_PLAYBACK] = r1->start;

- r = platform_get_resource(pdev, IORESOURCE_DMA, 1);
- if (!r)
+ r1 = platform_get_resource(pdev, IORESOURCE_DMA, 1);
+ if (!r1)
goto out2;
- wd->dmaids[SNDRV_PCM_STREAM_CAPTURE] = r->start;
+ wd->dmaids[SNDRV_PCM_STREAM_CAPTURE] = r1->start;

/* preserve PSC clock source set up by platform (dev.platform_data
* is already occupied by soc layer)


\
 
 \ /
  Last update: 2011-10-18 04:51    [W:0.035 / U:0.772 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site