From: Xiubo Li
Date: Mon, 19 May 2014 08:32:09 +0000 (+0800)
Subject: ASoC: cache: Fix possible ZERO_SIZE_PTR pointer dereferencing error.
X-Git-Tag: firefly_0821_release~176^2~3750^2~24^2~13^2~1
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b59dce53ef6193139253db09bfb64e3834689f1b;p=firefly-linux-kernel-4.4.55.git
ASoC: cache: Fix possible ZERO_SIZE_PTR pointer dereferencing error.
Since we cannot make sure the 'reg_size' will always be none zero here,
and then if 'reg_size' equals to zero, the kzalloc() will return ZERO_SIZE_PTR,
which equals to ((void *)16).
So this patch fix this with just doing the 'reg_size' zero check before calling
kzalloc().
Signed-off-by: Xiubo Li
Signed-off-by: Mark Brown
---
diff --git a/sound/soc/soc-cache.c b/sound/soc/soc-cache.c
index 3fa77d5f9b75..8fff5b6d86db 100644
--- a/sound/soc/soc-cache.c
+++ b/sound/soc/soc-cache.c
@@ -72,6 +72,9 @@ int snd_soc_cache_init(struct snd_soc_codec *codec)
reg_size = codec_drv->reg_cache_size * codec_drv->reg_word_size;
+ if (!reg_size)
+ return -EINVAL;
+
mutex_init(&codec->cache_rw_mutex);
dev_dbg(codec->dev, "ASoC: Initializing cache for %s codec\n",