From b59dce53ef6193139253db09bfb64e3834689f1b Mon Sep 17 00:00:00 2001
From: Xiubo Li
Date: Mon, 19 May 2014 16:32:09 +0800
Subject: 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
---
sound/soc/soc-cache.c | 3 +++
1 file changed, 3 insertions(+)
(limited to 'sound/soc')
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",
--
cgit v1.2.3
From b5fc40d3b37bdb3524cdf1f550bd0c3b05ac3888 Mon Sep 17 00:00:00 2001
From: Mark Brown
Date: Mon, 2 Jun 2014 16:08:21 +0100
Subject: ASoC: cache: Fix error code when not using ASoC level cache
It is not an error to have no cache so we shouldn't return an error code
and cause our callers to fail, just silently do nothing instead. Thanks
to Jarkko for identify the problematic commit.
Reported-by: Jarkko Nikula
Reported-by: Fabio Estevam
Signed-off-by: Mark Brown
---
sound/soc/soc-cache.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'sound/soc')
diff --git a/sound/soc/soc-cache.c b/sound/soc/soc-cache.c
index 8fff5b6d86db..00e70b6c7da2 100644
--- a/sound/soc/soc-cache.c
+++ b/sound/soc/soc-cache.c
@@ -73,7 +73,7 @@ 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;
+ return 0;
mutex_init(&codec->cache_rw_mutex);
--
cgit v1.2.3