aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/sound
diff options
context:
space:
mode:
authorTushar Behera <tushar.b@samsung.com>2014-07-04 14:23:00 +0530
committerMark Brown <broonie@linaro.org>2014-07-09 10:06:46 +0200
commit7e07e7c0854b32181b314f5ba43007629594663a (patch)
tree4445c7b2fe423b4f14503e47d62ef52c05106154 /sound
parentASoC: add SOC_VALUE_ENUM_EXT (diff)
downloadwireguard-linux-7e07e7c0854b32181b314f5ba43007629594663a.tar.xz
wireguard-linux-7e07e7c0854b32181b314f5ba43007629594663a.zip
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: Tushar Behera <tushar.b@samsung.com> Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/soc-core.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index b87d7d882e6d..63d11071fdba 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -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