[RFT,v2,1/3] ASoC: samsung: Fix possible double iounmap on s3c24xx driver probe failure
diff mbox

Message ID 20170727171338.13300-2-krzk@kernel.org
State Accepted
Headers show

Commit Message

Krzysztof Kozlowski July 27, 2017, 5:13 p.m. UTC
Commit 87b132bc0315 ("ASoC: samsung: s3c24{xx,12}-i2s: port to use
generic dmaengine API") moved ioremap() call from
s3c-i2s-v2.c:s3c_i2sv2_probe() to s3c2412-i2s.c:s3c2412_iis_dev_probe()
and converted it to devm- resource managed interface.

However the error path in first of them - s3c_i2sv2_probe() - was not
updated.  If getting a iis clock in s3c_i2sv2_probe() failed, the
address space would be unmapped there.  This could lead to:
1. double iounmap() later from devm-interface of s3c2412_iis_dev_probe()),
2. accessing the memory by other functions in s3c2412-i2s.c unit.

Anyway, the owner of this mapped region should be s3c2412-i2s.c because
it starts the mapping.

Affected are drivers for S3C24xx family although issue was not reproduced.

Fixes: 87b132bc0315 ("ASoC: samsung: s3c24{xx,12}-i2s: port to use generic dmaengine API")
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>

---

Not marking as Cc-stable because this is theoretical problem, not
reproduced and also not tested.

Please, kindly test on S3C24xx hardware.

Changes since v1:
1. None
---
 sound/soc/samsung/s3c-i2s-v2.c | 1 -
 1 file changed, 1 deletion(-)

Comments

Arvind Yadav July 28, 2017, 4:39 a.m. UTC | #1
On Thursday 27 July 2017 10:43 PM, Krzysztof Kozlowski wrote:
> Commit 87b132bc0315 ("ASoC: samsung: s3c24{xx,12}-i2s: port to use
> generic dmaengine API") moved ioremap() call from
> s3c-i2s-v2.c:s3c_i2sv2_probe() to s3c2412-i2s.c:s3c2412_iis_dev_probe()
> and converted it to devm- resource managed interface.
>
> However the error path in first of them - s3c_i2sv2_probe() - was not
> updated.  If getting a iis clock in s3c_i2sv2_probe() failed, the
> address space would be unmapped there.  This could lead to:
> 1. double iounmap() later from devm-interface of s3c2412_iis_dev_probe()),
> 2. accessing the memory by other functions in s3c2412-i2s.c unit.
>
> Anyway, the owner of this mapped region should be s3c2412-i2s.c because
> it starts the mapping.
>
> Affected are drivers for S3C24xx family although issue was not reproduced.
>
> Fixes: 87b132bc0315 ("ASoC: samsung: s3c24{xx,12}-i2s: port to use generic dmaengine API")
> Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Acked-by: Arvind Yadav<arvind.yadav.cs@gmail.com>
> ---
>
> Not marking as Cc-stable because this is theoretical problem, not
> reproduced and also not tested.
>
> Please, kindly test on S3C24xx hardware.
>
> Changes since v1:
> 1. None
> ---
>   sound/soc/samsung/s3c-i2s-v2.c | 1 -
>   1 file changed, 1 deletion(-)
>
> diff --git a/sound/soc/samsung/s3c-i2s-v2.c b/sound/soc/samsung/s3c-i2s-v2.c
> index ca522a95160b..9b28046eea8e 100644
> --- a/sound/soc/samsung/s3c-i2s-v2.c
> +++ b/sound/soc/samsung/s3c-i2s-v2.c
> @@ -634,7 +634,6 @@ int s3c_i2sv2_probe(struct snd_soc_dai *dai,
>   	i2s->iis_pclk = clk_get(dev, "iis");
>   	if (IS_ERR(i2s->iis_pclk)) {
>   		dev_err(dev, "failed to get iis_clock\n");
> -		iounmap(i2s->regs);
>   		return -ENOENT;
>   	}
>

Patch
diff mbox

diff --git a/sound/soc/samsung/s3c-i2s-v2.c b/sound/soc/samsung/s3c-i2s-v2.c
index ca522a95160b..9b28046eea8e 100644
--- a/sound/soc/samsung/s3c-i2s-v2.c
+++ b/sound/soc/samsung/s3c-i2s-v2.c
@@ -634,7 +634,6 @@  int s3c_i2sv2_probe(struct snd_soc_dai *dai,
 	i2s->iis_pclk = clk_get(dev, "iis");
 	if (IS_ERR(i2s->iis_pclk)) {
 		dev_err(dev, "failed to get iis_clock\n");
-		iounmap(i2s->regs);
 		return -ENOENT;
 	}