ASoC: codecs: Check for error pointer after calling devm_regmap_init_mmio
authorJiasheng Jiang <jiasheng@iscas.ac.cn>
Fri, 21 Jan 2022 17:10:31 +0000 (01:10 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 8 Apr 2022 12:23:13 +0000 (14:23 +0200)
[ Upstream commit aa505ecccf2ae7546e0e262d574e18a9241f3005 ]

Since the potential failure of the devm_regmap_init_mmio(), it will
return error pointer and be assigned to the regmap.
Then the error pointer will be dereferenced.
For example rx->regmap will be used in rx_macro_mclk_enable().
Therefore, it should be better to check it.

Fixes: af3d54b99764 ("ASoC: codecs: lpass-rx-macro: add support for lpass rx macro")
Fixes: c39667ddcfc5 ("ASoC: codecs: lpass-tx-macro: add support for lpass tx macro")
Fixes: 809bcbcecebf ("ASoC: codecs: lpass-wsa-macro: Add support to WSA Macro")
Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Link: https://lore.kernel.org/r/20220121171031.2826198-1-jiasheng@iscas.ac.cn
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/soc/codecs/lpass-rx-macro.c
sound/soc/codecs/lpass-tx-macro.c
sound/soc/codecs/lpass-wsa-macro.c

index 1c0409350e86995c136f04af788e4e8e2633b131..0f932ca61c816a546f3b00a4331d59bf3fa0fa83 100644 (file)
@@ -3542,6 +3542,8 @@ static int rx_macro_probe(struct platform_device *pdev)
                return PTR_ERR(base);
 
        rx->regmap = devm_regmap_init_mmio(dev, base, &rx_regmap_config);
+       if (IS_ERR(rx->regmap))
+               return PTR_ERR(rx->regmap);
 
        dev_set_drvdata(dev, rx);
 
index 27a0d5defd273da7dd4f5e8316ab2617b118d1e7..e4bbc6bd492522eda15a0e45c3ca2b5b7cf1af3b 100644 (file)
@@ -1803,6 +1803,8 @@ static int tx_macro_probe(struct platform_device *pdev)
                return PTR_ERR(base);
 
        tx->regmap = devm_regmap_init_mmio(dev, base, &tx_regmap_config);
+       if (IS_ERR(tx->regmap))
+               return PTR_ERR(tx->regmap);
 
        dev_set_drvdata(dev, tx);
 
index d3ac318fd6b6aded329a11e9bfe144eae4084e5e..dd1a8b7bc794cb159a9514151caf784030d3d151 100644 (file)
@@ -2405,6 +2405,8 @@ static int wsa_macro_probe(struct platform_device *pdev)
                return PTR_ERR(base);
 
        wsa->regmap = devm_regmap_init_mmio(dev, base, &wsa_regmap_config);
+       if (IS_ERR(wsa->regmap))
+               return PTR_ERR(wsa->regmap);
 
        dev_set_drvdata(dev, wsa);