From 5b3fcb8c073ea1762744eeb74d2e8301a8728d7b Mon Sep 17 00:00:00 2001 From: Xiaojun Sang Date: Fri, 24 Feb 2017 16:13:20 +0800 Subject: [PATCH] BACKPORT: ASoC: msm: qdsp6: set pointer to NULL after free. Pointer after kfree is not sanitized. Set pointer to NULL. CRs-Fixed: 2008031 Change-Id: I765a59a2059ba7a0fc16f70a1a8b92f57297a907 Signed-off-by: Xiaojun Sang Signed-off-by: Bikshapathi Kothapeta --- diff --git a/sound/soc/msm/msm-lowlatency-pcm-q6.c b/sound/soc/msm/msm-lowlatency-pcm-q6.c index ad7ae1f..0f323c4 100644 --- a/sound/soc/msm/msm-lowlatency-pcm-q6.c +++ b/sound/soc/msm/msm-lowlatency-pcm-q6.c @@ -504,6 +504,7 @@ SNDRV_PCM_STREAM_PLAYBACK); q6asm_audio_client_free(prtd->audio_client); kfree(prtd); + runtime->private_data = NULL; return 0; } @@ -596,6 +597,7 @@ SNDRV_PCM_STREAM_CAPTURE); q6asm_audio_client_free(prtd->audio_client); kfree(prtd); + runtime->private_data = NULL; return 0; } diff --git a/sound/soc/msm/msm-multi-ch-pcm-q6.c b/sound/soc/msm/msm-multi-ch-pcm-q6.c index 999683e..59072ec 100644 --- a/sound/soc/msm/msm-multi-ch-pcm-q6.c +++ b/sound/soc/msm/msm-multi-ch-pcm-q6.c @@ -576,6 +576,7 @@ multi_ch_pcm_audio.prtd = NULL; q6asm_audio_client_free(prtd->audio_client); kfree(prtd); + runtime->private_data = NULL; return 0; } @@ -668,6 +669,7 @@ SNDRV_PCM_STREAM_CAPTURE); q6asm_audio_client_free(prtd->audio_client); kfree(prtd); + runtime->private_data = NULL; return 0; } diff --git a/sound/soc/msm/msm-pcm-afe.c b/sound/soc/msm/msm-pcm-afe.c index 66043d1..a93d58b 100644 --- a/sound/soc/msm/msm-pcm-afe.c +++ b/sound/soc/msm/msm-pcm-afe.c @@ -326,6 +326,7 @@ pr_debug("%s: Could not allocate memory\n", __func__); mutex_unlock(&prtd->lock); kfree(prtd); + runtime->private_data = NULL; return -ENOMEM; } hrtimer_init(&prtd->hrt, CLOCK_MONOTONIC, HRTIMER_MODE_REL); @@ -409,6 +410,7 @@ mutex_unlock(&prtd->lock); prtd->prepared--; kfree(prtd); + runtime->private_data = NULL; return 0; } static int msm_afe_prepare(struct snd_pcm_substream *substream) diff --git a/sound/soc/msm/msm-pcm-q6.c b/sound/soc/msm/msm-pcm-q6.c index 16e1415..da696d0 100644 --- a/sound/soc/msm/msm-pcm-q6.c +++ b/sound/soc/msm/msm-pcm-q6.c @@ -509,6 +509,7 @@ SNDRV_PCM_STREAM_PLAYBACK); q6asm_audio_client_free(prtd->audio_client); kfree(prtd); + runtime->private_data = NULL; return 0; } @@ -604,6 +605,7 @@ msm_pcm_routing_dereg_phy_stream(soc_prtd->dai_link->be_id, SNDRV_PCM_STREAM_CAPTURE); kfree(prtd); + runtime->private_data = NULL; return 0; } diff --git a/sound/soc/msm/msm7k-pcm.c b/sound/soc/msm/msm7k-pcm.c index a9193a2..50983a0 100644 --- a/sound/soc/msm/msm7k-pcm.c +++ b/sound/soc/msm/msm7k-pcm.c @@ -393,6 +393,7 @@ msm_adsp_put(prtd->audrec); msm_adsp_put(prtd->audpre); kfree(prtd); + runtime->private_data = NULL; return 0; } @@ -449,6 +450,7 @@ out: kfree(prtd); + runtime->private_data = NULL; return ret; } @@ -492,6 +494,7 @@ alsa_audio_disable(prtd); audmgr_close(&prtd->audmgr); kfree(prtd); + runtime->private_data = NULL; return 0; } diff --git a/sound/soc/msm/msm7kv2-pcm.c b/sound/soc/msm/msm7kv2-pcm.c index 2b7a438..252e1f0 100644 --- a/sound/soc/msm/msm7kv2-pcm.c +++ b/sound/soc/msm/msm7kv2-pcm.c @@ -520,6 +520,7 @@ alsa_audio_disable(prtd); auddev_unregister_evt_listner(AUDDEV_CLNT_DEC, prtd->session_id); kfree(prtd); + runtime->private_data = NULL; return 0; } @@ -574,6 +575,7 @@ audpreproc_aenc_free(prtd->session_id); msm_adsp_put(prtd->audrec); kfree(prtd); + runtime->private_data = NULL; return 0; } diff --git a/sound/soc/msm/msm8x60-pcm.c b/sound/soc/msm/msm8x60-pcm.c index 7993435..bfbea5c 100644 --- a/sound/soc/msm/msm8x60-pcm.c +++ b/sound/soc/msm/msm8x60-pcm.c @@ -534,6 +534,7 @@ msm_clear_session_id(prtd->session_id); q6asm_audio_client_free(prtd->audio_client); kfree(prtd); + runtime->private_data = NULL; return 0; } @@ -627,6 +628,7 @@ msm_clear_session_id(prtd->session_id); q6asm_audio_client_free(prtd->audio_client); kfree(prtd); + runtime->private_data = NULL; return 0; }