From eceb04d76a01bb962c16f70679fe8b054d5af019 Mon Sep 17 00:00:00 2001 From: Dipesh Gandhi Date: Wed, 16 Dec 2015 15:53:01 +0530 Subject: [PATCH] ASoC: tegra-alt: add check pointer before access add check for context pointer before accessing it in suspend for asrc and arad. Bug 200160608 Change-Id: If549bf77e8d2a2ab66507127930bfa7c474ea782 Signed-off-by: Dipesh Gandhi Reviewed-on: http://git-master/r/923558 GVS: Gerrit_Virtual_Submit Reviewed-by: Ravindra Lokhande Reviewed-by: Nitin Kumbhar --- sound/soc/tegra-alt/tegra186_arad_alt.c | 6 ++++-- sound/soc/tegra-alt/tegra186_asrc_alt.c | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/sound/soc/tegra-alt/tegra186_arad_alt.c b/sound/soc/tegra-alt/tegra186_arad_alt.c index 397aa21e..fec3137b 100644 --- a/sound/soc/tegra-alt/tegra186_arad_alt.c +++ b/sound/soc/tegra-alt/tegra186_arad_alt.c @@ -111,7 +111,8 @@ static int tegra186_arad_suspend(struct device *dev) { struct tegra186_arad *arad = dev_get_drvdata(dev); - regcache_mark_dirty(arad->regmap); + if (arad) + regcache_mark_dirty(arad->regmap); return 0; } @@ -799,7 +800,6 @@ static int tegra186_arad_platform_probe(struct platform_device *pdev) ret = -ENOMEM; goto err; } - dev_set_drvdata(&pdev->dev, arad); arad->soc_data = soc_data; @@ -862,6 +862,8 @@ static int tegra186_arad_platform_probe(struct platform_device *pdev) TEGRA186_AHC_ARAD1_CB, &pdev->dev); #endif #endif + dev_set_drvdata(&pdev->dev, arad); + return 0; err_suspend: diff --git a/sound/soc/tegra-alt/tegra186_asrc_alt.c b/sound/soc/tegra-alt/tegra186_asrc_alt.c index 3a5a45ab..21b79979 100644 --- a/sound/soc/tegra-alt/tegra186_asrc_alt.c +++ b/sound/soc/tegra-alt/tegra186_asrc_alt.c @@ -223,7 +223,9 @@ static int tegra186_asrc_suspend(struct device *dev) { struct tegra186_asrc *asrc = dev_get_drvdata(dev); - regcache_mark_dirty(asrc->regmap); + if (asrc) + regcache_mark_dirty(asrc->regmap); + return 0; } #endif @@ -896,7 +898,6 @@ static int tegra186_asrc_platform_probe(struct platform_device *pdev) ret = -ENOMEM; goto err; } - dev_set_drvdata(&pdev->dev, asrc); asrc->soc_data = soc_data; @@ -972,6 +973,8 @@ static int tegra186_asrc_platform_probe(struct platform_device *pdev) goto err_suspend; } + dev_set_drvdata(&pdev->dev, asrc); + return 0; err_suspend: