diff options
author | Gustavo A. R. Silva <gustavo@embeddedor.com> | 2018-07-26 15:49:10 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2018-07-30 12:02:30 +0100 |
commit | ae1c696a480c67c45fb23b35162183f72c6be0e1 (patch) | |
tree | e5be7f08c77fe543dd36296989de2714f878d6a7 | |
parent | 4321723648b0abb456f7a9af51bb09a4ec60799d (diff) | |
download | linux-stable-ae1c696a480c67c45fb23b35162183f72c6be0e1.tar.gz linux-stable-ae1c696a480c67c45fb23b35162183f72c6be0e1.tar.bz2 linux-stable-ae1c696a480c67c45fb23b35162183f72c6be0e1.zip |
ASoC: sirf: Fix potential NULL pointer dereference
There is a potential execution path in which function
platform_get_resource() returns NULL. If this happens,
we will end up having a NULL pointer dereference.
Fix this by replacing devm_ioremap with devm_ioremap_resource,
which has the NULL check and the memory region request.
This code was detected with the help of Coccinelle.
Cc: stable@vger.kernel.org
Fixes: 2bd8d1d5cf89 ("ASoC: sirf: Add audio usp interface driver")
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | sound/soc/sirf/sirf-usp.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/sound/soc/sirf/sirf-usp.c b/sound/soc/sirf/sirf-usp.c index 77e7dcf969d0..d70fcd4a1adf 100644 --- a/sound/soc/sirf/sirf-usp.c +++ b/sound/soc/sirf/sirf-usp.c @@ -370,10 +370,9 @@ static int sirf_usp_pcm_probe(struct platform_device *pdev) platform_set_drvdata(pdev, usp); mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - base = devm_ioremap(&pdev->dev, mem_res->start, - resource_size(mem_res)); - if (base == NULL) - return -ENOMEM; + base = devm_ioremap_resource(&pdev->dev, mem_res); + if (IS_ERR(base)) + return PTR_ERR(base); usp->regmap = devm_regmap_init_mmio(&pdev->dev, base, &sirf_usp_regmap_config); if (IS_ERR(usp->regmap)) |