From 260ea95cc027500ee5086e2ef568b8c915e66fb5 Mon Sep 17 00:00:00 2001 From: Arvind Yadav Date: Tue, 25 Jul 2017 15:45:37 +0530 Subject: ASoC: atmel: ac97c: Handle return value of clk_prepare_enable. clk_prepare_enable() can fail here and we must check its return value. Signed-off-by: Arvind Yadav Signed-off-by: Mark Brown --- sound/atmel/ac97c.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'sound/atmel') diff --git a/sound/atmel/ac97c.c b/sound/atmel/ac97c.c index 9d2c9d9af688..52b0522fda20 100644 --- a/sound/atmel/ac97c.c +++ b/sound/atmel/ac97c.c @@ -783,7 +783,9 @@ static int atmel_ac97c_probe(struct platform_device *pdev) dev_dbg(&pdev->dev, "no peripheral clock\n"); return PTR_ERR(pclk); } - clk_prepare_enable(pclk); + retval = clk_prepare_enable(pclk); + if (retval) + return retval; retval = snd_card_new(&pdev->dev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1, THIS_MODULE, @@ -897,9 +899,9 @@ static int atmel_ac97c_resume(struct device *pdev) { struct snd_card *card = dev_get_drvdata(pdev); struct atmel_ac97c *chip = card->private_data; + int ret = clk_prepare_enable(chip->pclk); - clk_prepare_enable(chip->pclk); - return 0; + return ret; } static SIMPLE_DEV_PM_OPS(atmel_ac97c_pm, atmel_ac97c_suspend, atmel_ac97c_resume); -- cgit v1.2.3-59-g8ed1b From 0515760fa1159ffa863c7b2b73466aaff7d11a80 Mon Sep 17 00:00:00 2001 From: Christophe Jaillet Date: Thu, 31 Aug 2017 06:40:42 +0200 Subject: ALSA: ac97c: Fix an error handling path in 'atmel_ac97c_probe()' If 'clk_prepare_enable()' fails, we must release some resources before returning. Add a new label in the existing error handling path and 'goto' there. Fixes: 260ea95cc027 ("ASoC: atmel: ac97c: Handle return value of clk_prepare_enable.") Signed-off-by: Christophe JAILLET Acked-by: Alexandre Belloni Signed-off-by: Mark Brown --- sound/atmel/ac97c.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'sound/atmel') diff --git a/sound/atmel/ac97c.c b/sound/atmel/ac97c.c index 52b0522fda20..d78405329ceb 100644 --- a/sound/atmel/ac97c.c +++ b/sound/atmel/ac97c.c @@ -785,7 +785,7 @@ static int atmel_ac97c_probe(struct platform_device *pdev) } retval = clk_prepare_enable(pclk); if (retval) - return retval; + goto err_prepare_enable; retval = snd_card_new(&pdev->dev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1, THIS_MODULE, @@ -881,6 +881,7 @@ err_request_irq: snd_card_free(card); err_snd_card_new: clk_disable_unprepare(pclk); +err_prepare_enable: clk_put(pclk); return retval; } -- cgit v1.2.3-59-g8ed1b