diff options
| author | Alexander Shiyan <shc_work@mail.ru> | 2014-02-15 14:28:29 -0500 |
|---|---|---|
| committer | Mark Brown <broonie@linaro.org> | 2014-02-15 19:36:40 -0500 |
| commit | 9febd494d15c4a351e9c9cae7184643144eea892 (patch) | |
| tree | f01b0ed7b6f3979b6b0cb5151c7cbc119ba51bee | |
| parent | 38dbfb59d1175ef458d006556061adeaa8751b72 (diff) | |
ASoC: txx9aclc_ac97: Fix kernel crash on probe
This patch fixes a crash caused by commit 3bed3344c826
(ASoC: txx9aclc_ac97: Convert to devm_ioremap_resource()).
This is an attempt to assign "drvdata->base" while memory
for "drvdata" is not already allocated.
Fixes: 3bed3344c826 (ASoC: txx9aclc_ac97: Convert to devm_ioremap_resource())
Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Mark Brown <broonie@linaro.org>
Cc: stable@vger.kernel.org
| -rw-r--r-- | sound/soc/txx9/txx9aclc-ac97.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sound/soc/txx9/txx9aclc-ac97.c b/sound/soc/txx9/txx9aclc-ac97.c index e0305a148568..9edd68db9f48 100644 --- a/sound/soc/txx9/txx9aclc-ac97.c +++ b/sound/soc/txx9/txx9aclc-ac97.c | |||
| @@ -183,14 +183,16 @@ static int txx9aclc_ac97_dev_probe(struct platform_device *pdev) | |||
| 183 | irq = platform_get_irq(pdev, 0); | 183 | irq = platform_get_irq(pdev, 0); |
| 184 | if (irq < 0) | 184 | if (irq < 0) |
| 185 | return irq; | 185 | return irq; |
| 186 | |||
| 187 | drvdata = devm_kzalloc(&pdev->dev, sizeof(*drvdata), GFP_KERNEL); | ||
| 188 | if (!drvdata) | ||
| 189 | return -ENOMEM; | ||
| 190 | |||
| 186 | r = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 191 | r = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 187 | drvdata->base = devm_ioremap_resource(&pdev->dev, r); | 192 | drvdata->base = devm_ioremap_resource(&pdev->dev, r); |
| 188 | if (IS_ERR(drvdata->base)) | 193 | if (IS_ERR(drvdata->base)) |
| 189 | return PTR_ERR(drvdata->base); | 194 | return PTR_ERR(drvdata->base); |
| 190 | 195 | ||
| 191 | drvdata = devm_kzalloc(&pdev->dev, sizeof(*drvdata), GFP_KERNEL); | ||
| 192 | if (!drvdata) | ||
| 193 | return -ENOMEM; | ||
| 194 | platform_set_drvdata(pdev, drvdata); | 196 | platform_set_drvdata(pdev, drvdata); |
| 195 | drvdata->physbase = r->start; | 197 | drvdata->physbase = r->start; |
| 196 | if (sizeof(drvdata->physbase) > sizeof(r->start) && | 198 | if (sizeof(drvdata->physbase) > sizeof(r->start) && |
