From 2a793c001dff4ef1c804ba3f46c0b8aa1f88fba7 Mon Sep 17 00:00:00 2001 From: Oleksandr Suvorov Date: Fri, 3 May 2019 10:49:04 +0300 Subject: ASoC: sgtl5000: Fix possible dereference crash - ldo_regulator_remove() doesn't reset sgtl5000->ldo so it is possible to dereference members of previously freed struct ldo. Signed-off-by: Oleksandr Suvorov --- sound/soc/codecs/sgtl5000.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c index 0a47fe2c8ba6..448e95702744 100644 --- a/sound/soc/codecs/sgtl5000.c +++ b/sound/soc/codecs/sgtl5000.c @@ -866,6 +866,7 @@ static int ldo_regulator_remove(struct snd_soc_codec *codec) if (!ldo) return 0; + sgtl5000->ldo = NULL; regulator_unregister(ldo->dev); kfree(ldo->desc.name); kfree(ldo); @@ -1269,8 +1270,7 @@ err_regulator_disable: err_regulator_free: regulator_bulk_free(ARRAY_SIZE(sgtl5000->supplies), sgtl5000->supplies); - if (! external_vddd) - ldo_regulator_remove(codec); + ldo_regulator_remove(codec); return ret; } -- cgit v1.2.3