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

Commit 980e17b4 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "asoc: Fix out of bounds access in xt logging disable functions"

parents 40e92884 b6556116
Loading
Loading
Loading
Loading
+42 −11
Original line number Diff line number Diff line
@@ -282,6 +282,7 @@ struct msm_dai_q6_cdc_dma_dai_data {
	u32 channels;
	u32 bitwidth;
	u32 is_island_dai;
	u32 xt_logging_disable;
	union afe_port_config port_config;
};

@@ -2844,23 +2845,53 @@ static int msm_dai_q6_cal_info_get(struct snd_kcontrol *kcontrol,
	return 0;
}

static int msm_dai_q6_xt_logging_disable_put(struct snd_kcontrol *kcontrol,
static int msm_dai_q6_cdc_dma_xt_logging_disable_put(
					struct snd_kcontrol *kcontrol,
					struct snd_ctl_elem_value *ucontrol)
{
	struct msm_dai_q6_cdc_dma_dai_data *dai_data = kcontrol->private_data;

	if (dai_data) {
		dai_data->xt_logging_disable = ucontrol->value.integer.value[0];
		pr_debug("%s: setting xt logging disable to %d\n",
			__func__, dai_data->xt_logging_disable);
	}

	return 0;
}

static int msm_dai_q6_cdc_dma_xt_logging_disable_get(
					struct snd_kcontrol *kcontrol,
					struct snd_ctl_elem_value *ucontrol)
{
	struct msm_dai_q6_cdc_dma_dai_data *dai_data = kcontrol->private_data;

	if (dai_data)
		ucontrol->value.integer.value[0] = dai_data->xt_logging_disable;
	return 0;
}

static int msm_dai_q6_sb_xt_logging_disable_put(
					struct snd_kcontrol *kcontrol,
					struct snd_ctl_elem_value *ucontrol)
{
	struct msm_dai_q6_dai_data *dai_data = kcontrol->private_data;

	if (dai_data) {
		dai_data->xt_logging_disable = ucontrol->value.integer.value[0];
		pr_debug("%s: setting xt logging disable to %d\n",
			__func__, dai_data->xt_logging_disable);
	}

	return 0;
}

static int msm_dai_q6_xt_logging_disable_get(struct snd_kcontrol *kcontrol,
static int msm_dai_q6_sb_xt_logging_disable_get(struct snd_kcontrol *kcontrol,
				    struct snd_ctl_elem_value *ucontrol)
{
	struct msm_dai_q6_dai_data *dai_data = kcontrol->private_data;

	if (dai_data)
		ucontrol->value.integer.value[0] = dai_data->xt_logging_disable;
	return 0;
}
@@ -3726,8 +3757,8 @@ static const struct snd_kcontrol_new sb_config_controls[] = {
		     msm_dai_q6_sb_format_get,
		     msm_dai_q6_sb_format_put),
	SOC_ENUM_EXT("SLIM_0_RX XTLoggingDisable", xt_logging_disable_enum[0],
		     msm_dai_q6_xt_logging_disable_get,
		     msm_dai_q6_xt_logging_disable_put),
		     msm_dai_q6_sb_xt_logging_disable_get,
		     msm_dai_q6_sb_xt_logging_disable_put),
};

static const struct snd_kcontrol_new rt_proxy_config_controls[] = {
@@ -12028,8 +12059,8 @@ static const struct snd_kcontrol_new cdc_dma_config_controls[] = {
		     msm_dai_q6_cdc_dma_format_put),
	SOC_ENUM_EXT("WSA_CDC_DMA_0 RX XTLoggingDisable",
		     xt_logging_disable_enum[0],
		     msm_dai_q6_xt_logging_disable_get,
		     msm_dai_q6_xt_logging_disable_put),
		     msm_dai_q6_cdc_dma_xt_logging_disable_get,
		     msm_dai_q6_cdc_dma_xt_logging_disable_put),
};

/* SOC probe for codec DMA interface */