Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e3509ff0 authored by Daniel Mack's avatar Daniel Mack Committed by Mark Brown
Browse files

ASoC: fix NULL pointer dereference in soc_suspend()



In case the initalization of an soc_device failed, there is no codec
associated with it. soc_suspend() will still dereference the pointer
and cause an Ooops when entering the sleep mode.

This happens on our board with a multi-target kernel image when booted
on a machine without audio circuits.

This patch makes the code bail out very early in this special case.

Signed-off-by: default avatarDaniel Mack <daniel@caiaq.de>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent d08664fd
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -628,6 +628,12 @@ static int soc_suspend(struct platform_device *pdev, pm_message_t state)
	struct snd_soc_codec *codec = card->codec;
	int i;

	/* If the initialization of this soc device failed, there is no codec
	 * associated with it. Just bail out in this case.
	 */
	if (!codec)
		return 0;

	/* Due to the resume being scheduled into a workqueue we could
	* suspend before that's finished - wait for it to complete.
	 */