ASoC: sgtl5000: use after free in ldo_regulator_register()
authorDan Carpenter <error27@gmail.com>
Tue, 8 Mar 2011 11:39:24 +0000 (14:39 +0300)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 8 Mar 2011 18:57:24 +0000 (18:57 +0000)
The "ldo" variable was dereferenced after free on the error path.

Signed-off-by: Dan Carpenter <error27@gmail.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/sgtl5000.c

index b7e97c02689874f1da2d826fd33856858720b364..1f7217f703ee60381deea291658e93f23949e01c 100644 (file)
@@ -875,11 +875,13 @@ static int ldo_regulator_register(struct snd_soc_codec *codec,
        ldo->dev = regulator_register(&ldo->desc, codec->dev,
                                          init_data, ldo);
        if (IS_ERR(ldo->dev)) {
+               int ret = PTR_ERR(ldo->dev);
+
                dev_err(codec->dev, "failed to register regulator\n");
                kfree(ldo->desc.name);
                kfree(ldo);
 
-               return PTR_ERR(ldo->dev);
+               return ret;
        }
 
        return 0;