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

Commit 7e07e7c0 authored by Tushar Behera's avatar Tushar Behera Committed by Mark Brown
Browse files

ASoC: core: Fix possible NULL pointer dereference



snd_soc_of_parse_card_name() may be called before card->dev has been
set, which results in a kernel panic.

Unable to handle kernel NULL pointer dereference at virtual address 00000210
PC is at snd_soc_of_parse_card_name+0x18/0x54
LR is at snow_probe+0x5c/0xd4

Add an error check in snd_soc_of_parse_card_name() to take care of this
case and print out a message in case of error.

Signed-off-by: default avatarTushar Behera <tushar.b@samsung.com>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 1e4c0d7c
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -4420,9 +4420,16 @@ EXPORT_SYMBOL_GPL(snd_soc_unregister_codec);
int snd_soc_of_parse_card_name(struct snd_soc_card *card,
			       const char *propname)
{
	struct device_node *np = card->dev->of_node;
	struct device_node *np;
	int ret;

	if (!card->dev) {
		pr_err("card->dev is not set before calling %s\n", __func__);
		return -EINVAL;
	}

	np = card->dev->of_node;

	ret = of_property_read_string_index(np, propname, 0, &card->name);
	/*
	 * EINVAL means the property does not exist. This is fine providing