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