ASoC: cache: Fix possible ZERO_SIZE_PTR pointer dereferencing error.
authorXiubo Li <Li.Xiubo@freescale.com>
Mon, 19 May 2014 08:32:09 +0000 (16:32 +0800)
committerMark Brown <broonie@linaro.org>
Sun, 1 Jun 2014 19:02:17 +0000 (20:02 +0100)
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 <Li.Xiubo@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
sound/soc/soc-cache.c

index 3fa77d5f9b75c0b7f442669301f4bf667eab8f7c..8fff5b6d86dbf12844367414caec1cb443942919 100644 (file)
@@ -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",