Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2b0c9958 authored by Vikram Panduranga's avatar Vikram Panduranga
Browse files

asoc: msm-pcm: move null ptr check after lock



Null pointer for runtime is checked before acquiring the lock.
By the time, it acquires lock and tries to access private
data runtime may be removed which can lead to null ptr
dereference.

Change-Id: I86ca89bd7dbd765c040bab2a292f62c2d3164140
Signed-off-by: default avatarVikram Panduranga <vpandura@codeaurora.org>
parent 2ef0c88a
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1797,11 +1797,11 @@ static int msm_pcm_chmap_ctl_put(struct snd_kcontrol *kcontrol,
		}
	}

	if (!substream->runtime || !rtd)
	if (!rtd)
		return 0;

	mutex_lock(&pdata->lock);
	prtd = substream->runtime->private_data;
	prtd = substream->runtime ? substream->runtime->private_data : NULL;
	if (prtd) {
		prtd->set_channel_map = true;
			for (i = 0; i < PCM_FORMAT_MAX_NUM_CHANNEL_V8; i++)
@@ -1864,11 +1864,11 @@ static int msm_pcm_chmap_ctl_get(struct snd_kcontrol *kcontrol,

	memset(ucontrol->value.integer.value, 0,
		sizeof(ucontrol->value.integer.value));
	if (!substream->runtime || !rtd)
	if (!rtd)
		return 0; /* no channels set */

	mutex_lock(&pdata->lock);
	prtd = substream->runtime->private_data;
	prtd = substream->runtime ? substream->runtime->private_data : NULL;

	if (prtd && prtd->set_channel_map == true) {
		for (i = 0; i < PCM_FORMAT_MAX_NUM_CHANNEL_V8; i++)