diff options
author | Gustavo A. R. Silva <gustavo@embeddedor.com> | 2018-07-26 22:49:10 +0200 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2018-07-30 13:02:30 +0200 |
commit | ae1c696a480c67c45fb23b35162183f72c6be0e1 (patch) | |
tree | e5be7f08c77fe543dd36296989de2714f878d6a7 /sound/soc/sirf | |
parent | ASoC: tegra_alc5632: fix device_node refcounting (diff) | |
download | linux-ae1c696a480c67c45fb23b35162183f72c6be0e1.tar.xz linux-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>
Diffstat (limited to 'sound/soc/sirf')
-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)) |