ASoC: mediatek: mt8365-afe-pcm: fix possible NULL-pointer dereferences in mt8365_afe_suspend()
Subsystems (3)
PATCH 1/1 ASoC: mediatek: mt8365-afe-pcm: fix possible NULL-pointer dereferences in mt8365_afe_suspend()
mt8365_afe_suspend() allocates the register backup buffer with devm_kcalloc(), but does not check for allocation failure before using the returned pointer. This may lead to a NULL pointer dereference when accessing afe->reg_back_up[i].
Add the missing NULL check and return -ENOMEM on allocation failure after disabling the main clock.
Also propagate the return value of mt8365_afe_suspend() in mt8365_afe_dev_runtime_suspend() so that the suspended state is not updated when suspend fails.
--- sound/soc/mediatek/mt8365/mt8365-afe-pcm.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-)
sound/soc/mediatek/mt8365/mt8365-afe-pcm.c +11 -2
@@ -1974,10 +1974,15 @@ static int mt8365_afe_suspend(struct device *dev)mt8365_afe_enable_main_clk (afe); -if (!afe->reg_back_up) +if (!afe->reg_back_up) { afe->reg_back_up =devm_kcalloc (dev, afe->reg_back_up_list_num,sizeof (unsigned int ),GFP_KERNEL ); +if (!afe->reg_back_up) { +mt8365_afe_disable_main_clk (afe); +return -ENOMEM ; + } + }for (i =0 ; i < afe->reg_back_up_list_num; i++) regmap_read(regmap, afe->reg_back_up_list[i],
@@ -2011,11 +2016,15 @@ static int mt8365_afe_resume(struct device *dev)static int mt8365_afe_dev_runtime_suspend (struct device *dev) {struct mtk_base_afe *afe =dev_get_drvdata (dev); +int ret;if (pm_runtime_status_suspended (dev) || afe->suspended)return 0 ; -mt8365_afe_suspend (dev); + ret =mt8365_afe_suspend (dev); +if (ret) +return ret; + afe->suspended = true;return 0 ; }
Signature · 1 line
2.43.0
Mark Brown
maintainerQuoted 1 line · Tuo Li
ASoC: mediatek: mt8365-afe-pcm: fix possible NULL-pointer dereferences in
mt8365_afe_suspend()
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-7.2
Thanks!
[1/1] ASoC: mediatek: mt8365-afe-pcm: fix possible NULL-pointer dereferences in mt8365_afe_suspend()
https://git.kernel.org/broonie/sound/c/b8948ac26efc
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark