diff options
author | Xiubo Li <Li.Xiubo@freescale.com> | 2014-05-19 16:32:09 +0800 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-06-01 20:02:17 +0100 |
commit | b59dce53ef6193139253db09bfb64e3834689f1b (patch) | |
tree | f67ea29d0dba4a5b6557f1f5d0c191a8fbdfb09d /sound/soc/soc-cache.c | |
parent | 24089e04cb1b4975bafd6368ab8b92082ebf6ad7 (diff) | |
download | linux-b59dce53ef6193139253db09bfb64e3834689f1b.tar.gz linux-b59dce53ef6193139253db09bfb64e3834689f1b.tar.bz2 linux-b59dce53ef6193139253db09bfb64e3834689f1b.zip |
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 <Li.Xiubo@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'sound/soc/soc-cache.c')
-rw-r--r-- | sound/soc/soc-cache.c | 3 |
1 files changed, 3 insertions, 0 deletions
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", |