diff options
author | Alexandru Elisei <alexandru.elisei@arm.com> | 2022-07-11 14:05:22 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2022-07-11 14:25:18 +0100 |
commit | 26b9f2fa7b1c6aba6fa9b83274a3e54868f69562 (patch) | |
tree | 66e46e9c690be683e013338054ed5498076ef85c | |
parent | fc976f5629afb4160ee77798b14a693eac903ffd (diff) | |
download | lwn-26b9f2fa7b1c6aba6fa9b83274a3e54868f69562.tar.gz lwn-26b9f2fa7b1c6aba6fa9b83274a3e54868f69562.zip |
ASoC: rockchip: i2s: Fix NULL pointer dereference when pinctrl is not found
Commit a5450aba737d ("ASoC: rockchip: i2s: switch BCLK to GPIO") switched
BCLK to GPIO functions when probing the i2s bus interface, but missed
adding a check for when devm_pinctrl_get() returns an error. This can lead
to the following NULL pointer dereference on a rockpro64-v2 if there are no
"pinctrl" properties in the i2s device tree node.
Check that i2s->pinctrl is valid before attempting to search for the
bclk_on and bclk_off pinctrl states.
Fixes: a5450aba737d ("ASoC: rockchip: i2s: switch BCLK to GPIO")
Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
Link: https://lore.kernel.org/r/20220711130522.401551-1-alexandru.elisei@arm.com
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | sound/soc/rockchip/rockchip_i2s.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c index 99a128a666fb..c9fedf6eb2e6 100644 --- a/sound/soc/rockchip/rockchip_i2s.c +++ b/sound/soc/rockchip/rockchip_i2s.c @@ -808,8 +808,11 @@ static int rockchip_i2s_probe(struct platform_device *pdev) i2s->bclk_ratio = 64; i2s->pinctrl = devm_pinctrl_get(&pdev->dev); - if (IS_ERR(i2s->pinctrl)) + if (IS_ERR(i2s->pinctrl)) { dev_err(&pdev->dev, "failed to find i2s pinctrl\n"); + ret = PTR_ERR(i2s->pinctrl); + goto err_clk; + } i2s->bclk_on = pinctrl_lookup_state(i2s->pinctrl, "bclk_on"); |