diff options
author | Krzysztof Kozlowski <krzk@kernel.org> | 2017-07-27 13:13:36 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2017-07-28 05:58:23 -0400 |
commit | 776bac64bf13e20c27f7ad168811abdf3b72f14d (patch) | |
tree | 9e5802d8a1976e8d4ca635cac866c3b06be64e05 | |
parent | 0f11daf10b4ac6a6c8ea6b39552f119c595b5406 (diff) |
ASoC: samsung: Fix possible double iounmap on s3c24xx driver probe failure
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>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | sound/soc/samsung/s3c-i2s-v2.c | 1 |
1 files changed, 0 insertions, 1 deletions
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, | |||
634 | i2s->iis_pclk = clk_get(dev, "iis"); | 634 | i2s->iis_pclk = clk_get(dev, "iis"); |
635 | if (IS_ERR(i2s->iis_pclk)) { | 635 | if (IS_ERR(i2s->iis_pclk)) { |
636 | dev_err(dev, "failed to get iis_clock\n"); | 636 | dev_err(dev, "failed to get iis_clock\n"); |
637 | iounmap(i2s->regs); | ||
638 | return -ENOENT; | 637 | return -ENOENT; |
639 | } | 638 | } |
640 | 639 | ||