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

Unverified Commit 96241528 authored by Michael Bestas's avatar Michael Bestas
Browse files

Merge tag 'LA.UM.9.14.r1-22400-LAHAINA.QSSI13.0' of...

Merge tag 'LA.UM.9.14.r1-22400-LAHAINA.QSSI13.0' of https://git.codelinaro.org/clo/la/platform/vendor/opensource/audio-kernel into android13-5.4-lahaina

"LA.UM.9.14.r1-22400-LAHAINA.QSSI13.0"

* tag 'LA.UM.9.14.r1-22400-LAHAINA.QSSI13.0' of https://git.codelinaro.org/clo/la/platform/vendor/opensource/audio-kernel:
  Asoc: add functionality to get source Track data from FNN module
  dsp: add support to get Source Track data from FNN module
  asoc: lahaina: add 16 channel support on tdm interface
  asoc: Add jitter cleaner external clock switch
  dsp: q6asm: Add check for ADSP payload size
  ASoC: msm-pcm-host-voice: Check validity of session idx
  dsp: Address information leak in dsp drivers
  dsp: q6lsm: Address use after free for mmap handle
  dsp: q6afe: Add check for fbsp state
  dsp: q6lsm: Add check for payload buffer
  ASoC: Resolve use after free in listen sound client
  ASoC: dsp: q6core: Avoid use after free
  ASoC: msm-lsm-client: Integer overflow check
  asoc:msm-lsm-client: check for param size before copying

Change-Id: Ia01bfa4467f137efa4578708177862b794aeaf91
parents c2b8f4b2 a9917191
Loading
Loading
Loading
Loading
+650 −77

File changed.

Preview size limit exceeded, changes collapsed.

+2 −1
Original line number Diff line number Diff line
@@ -533,6 +533,7 @@ static int clk_id_index;
static int clk_root_index;
static int clk_attri_index;
static int global_dyn_mclk_cfg_portid;
static bool jitter_cleaner_enable = false; // jitter cleaner ext clock enable/disable
struct afe_param_id_clock_set_v2_t global_dyn_mclk_cfg = {
	.clk_set_minor_version = Q6AFE_LPASS_CLK_CONFIG_API_VERSION,
	.clk_id = Q6AFE_LPASS_CLK_ID_TER_PCM_IBIT,
@@ -10755,7 +10756,7 @@ static int msm_dai_q6_dai_tdm_probe(struct snd_soc_dai *dai)
	}

	/* add AFE dyn mclk controls */
	if (!afe_dyn_mclk_control_added) {
	if ((!afe_dyn_mclk_control_added) && (jitter_cleaner_enable)) {
		rc = msm_pcm_add_afe_dyn_mclk_control(dai);
		if (rc < 0) {
			dev_err(dai->dev, "%s: add AFE dyn mclk control failed DAI: %s\n",
+16 −0
Original line number Diff line number Diff line
@@ -782,6 +782,13 @@ static int msm_lsm_reg_model(struct snd_pcm_substream *substream,

		q6lsm_sm_set_param_data(client, p_info, &offset, sm);

		if ((sm->size - offset) < p_info->param_size) {
			dev_err(rtd->dev, "%s: user buff size is greater than expected\n",
				__func__);
			rc = -EINVAL;
			goto err_copy;
		}

		/*
		 * For set_param, advance the sound model data with the
		 * number of bytes required by param_data.
@@ -2651,6 +2658,15 @@ static int msm_lsm_ioctl(struct snd_pcm_substream *substream,
			err = -EFAULT;
			goto done;
		}

		if (temp_p_info.param_size > 0 &&
			((INT_MAX - sizeof(temp_p_info)) <
				temp_p_info.param_size)) {
			pr_err("%s: Integer overflow\n", __func__);
			err = -EINVAL;
			goto done;
		}

		size = sizeof(temp_p_info) +  temp_p_info.param_size;
		p_info = kzalloc(size, GFP_KERNEL);

+7 −0
Original line number Diff line number Diff line
@@ -745,6 +745,13 @@ void hpcm_notify_evt_processing(uint8_t *data, char *session,
		return;
	}

	if (prtd->mixer_conf.sess_indx < VOICE_INDEX ||
		prtd->mixer_conf.sess_indx >= MAX_SESSION) {
		pr_err("%s:: Invalid session idx %d\n",
			__func__, prtd->mixer_conf.sess_indx);
		return;
	}

	if (notify_evt->tap_point == VSS_IVPCM_TAP_POINT_TX_DEFAULT) {
		tp = &prtd->session[prtd->mixer_conf.sess_indx].tx_tap_point;
		tmd = &prtd->mixer_conf.tx;
+150 −23
Original line number Diff line number Diff line
@@ -32500,8 +32500,13 @@ static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
				    struct snd_ctl_elem_info *uinfo)
{
	if (strnstr(kcontrol->id.name, "FNN", sizeof("FNN"))) {
		uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
		uinfo->count = sizeof(struct fluence_nn_source_tracking_param);
	} else {
		uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
		uinfo->count = sizeof(struct source_tracking_param);
	}
	return 0;
}
@@ -32511,12 +32516,25 @@ static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
{
	int ret = 0;
	struct source_tracking_param sourceTrackingData;
	struct fluence_nn_source_tracking_param FnnSourceTrackingData;
	memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
	if (strnstr(kcontrol->id.name, "FNN", sizeof("FNN"))) {
		memset(&FnnSourceTrackingData, 0, sizeof(struct fluence_nn_source_tracking_param));
		ret = voc_get_fnn_source_tracking(&FnnSourceTrackingData);
		if (ret) {
			pr_err("%s: Error getting FNN ST Params, err=%d\n",
				__func__, ret);
			ret = -EINVAL;
			goto done;
		}
		memcpy(ucontrol->value.bytes.data, (void *)&FnnSourceTrackingData,
			sizeof(struct fluence_nn_source_tracking_param));
	} else {
		memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
		ret = voc_get_source_tracking(&sourceTrackingData);
		if (ret) {
		pr_debug("%s: Error getting Source Tracking Params, err=%d\n",
			pr_err("%s: Error getting Source Tracking Params, err=%d\n",
				__func__, ret);
			ret = -EINVAL;
@@ -32524,7 +32542,7 @@ static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
		}
		memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
			sizeof(struct source_tracking_param));
	}
done:
	return ret;
}
@@ -32724,12 +32742,18 @@ static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
					struct snd_ctl_elem_value *ucontrol)
{
	int ret = 0;
	int ret = -EINVAL;
	struct source_tracking_param sourceTrackingData;
	struct fluence_nn_source_tracking_param FnnSourceTrackingData;
	int port_id, copp_idx;
	if (strnstr(kcontrol->id.name, "FNN", sizeof("FNN"))) {
		ret = msm_audio_sound_focus_derive_port_id(kcontrol,
				"FNN STM Audio Tx ", &port_id);
	} else {
		ret = msm_audio_sound_focus_derive_port_id(kcontrol,
					"Source Tracking Audio Tx ", &port_id);
	}
	if (ret) {
		pr_err("%s: Error in deriving port id, err=%d\n",
			  __func__, ret);
@@ -32748,6 +32772,18 @@ static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
		goto done;
	}
	if (strnstr(kcontrol->id.name, "FNN", sizeof("FNN"))) {
		ret = adm_get_fnn_source_tracking(port_id, copp_idx, &FnnSourceTrackingData);
		if (ret) {
			pr_err("%s: Error getting FNN STM Params, err=%d\n",
				__func__, ret);
			ret = -EINVAL;
			goto done;
		}
		memcpy(ucontrol->value.bytes.data, (void *)&FnnSourceTrackingData,
			sizeof(struct fluence_nn_source_tracking_param));
	} else {
		ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
		if (ret) {
			pr_err("%s: Error getting Source Tracking Params, err=%d\n",
@@ -32756,9 +32792,9 @@ static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
			ret = -EINVAL;
			goto done;
		}
		memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
		sizeof(struct source_tracking_param));
	}
done:
	return ret;
@@ -32833,6 +32869,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
		.info	= msm_source_tracking_info,
		.get	= msm_voice_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READ,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
		.name	= "FNN STM Voice Tx SLIMBUS_0",
		.info	= msm_source_tracking_info,
		.get	= msm_voice_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -32848,6 +32891,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
		.info	= msm_source_tracking_info,
		.get	= msm_audio_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READ,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
		.name	= "FNN STM Audio Tx SLIMBUS_0",
		.info	= msm_source_tracking_info,
		.get	= msm_audio_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -32863,6 +32913,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
		.info	= msm_source_tracking_info,
		.get	= msm_voice_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READ,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
		.name	= "FNN STM Voice Tx TERT_MI2S",
		.info	= msm_source_tracking_info,
		.get	= msm_voice_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -32878,6 +32935,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
		.info	= msm_source_tracking_info,
		.get	= msm_audio_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READ,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
		.name	= "FNN STM Audio Tx TERT_MI2S",
		.info	= msm_source_tracking_info,
		.get	= msm_audio_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -32893,6 +32957,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
		.info	= msm_source_tracking_info,
		.get	= msm_voice_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READ,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
		.name	= "FNN STM Voice Tx INT3_MI2S",
		.info	= msm_source_tracking_info,
		.get	= msm_voice_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -32908,6 +32979,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
		.info	= msm_source_tracking_info,
		.get	= msm_audio_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READ,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
		.name	= "FNN STM Audio Tx INT3_MI2S",
		.info	= msm_source_tracking_info,
		.get	= msm_audio_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -32923,6 +33001,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
		.info	= msm_source_tracking_info,
		.get	= msm_voice_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READ,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
		.name	= "FNN STM Voice Tx VA_CDC_DMA_TX_0",
		.info	= msm_source_tracking_info,
		.get	= msm_voice_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -32938,6 +33023,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
		.info	= msm_source_tracking_info,
		.get	= msm_audio_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READ,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
		.name	= "FNN STM Audio Tx VA_CDC_DMA_TX_0",
		.info	= msm_source_tracking_info,
		.get	= msm_audio_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -32953,6 +33045,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
		.info	= msm_source_tracking_info,
		.get	= msm_voice_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READ,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
		.name	= "FNN STM Voice Tx TX_CDC_DMA_TX_3",
		.info	= msm_source_tracking_info,
		.get	= msm_voice_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -32968,6 +33067,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
		.info	= msm_source_tracking_info,
		.get	= msm_audio_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READ,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
		.name	= "FNN STM Audio Tx TX_CDC_DMA_TX_3",
		.info	= msm_source_tracking_info,
		.get	= msm_audio_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -32983,6 +33089,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
		.info	= msm_source_tracking_info,
		.get	= msm_voice_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READ,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
		.name	= "FNN STM Voice Tx QUIN_TDM_TX_0",
		.info	= msm_source_tracking_info,
		.get	= msm_voice_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -32998,6 +33111,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
		.info	= msm_source_tracking_info,
		.get	= msm_audio_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READ,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
		.name	= "FNN STM Audio Tx QUIN_TDM_TX_0",
		.info	= msm_source_tracking_info,
		.get	= msm_audio_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
		.iface  = SNDRV_CTL_ELEM_IFACE_MIXER,
@@ -33013,6 +33133,13 @@ static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
		.info   = msm_source_tracking_info,
		.get    = msm_audio_source_tracking_get,
	},
	{
		.access = SNDRV_CTL_ELEM_ACCESS_READ,
		.iface	= SNDRV_CTL_ELEM_IFACE_MIXER,
		.name	= "FNN STM Audio Tx PRIMARY_TDM",
		.info	= msm_source_tracking_info,
		.get	= msm_audio_source_tracking_get,
	},
};
static const struct snd_kcontrol_new msm_source_doa_tracking_controls[] = {
Loading