Merge "dsp: asm: Add check for num_channels before calling q6asm_map_channels"
This commit is contained in:
commit
a2faea1692
1 changed files with 83 additions and 2 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
|
||||
* Author: Brian Swetland <swetland@google.com>
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
|
@ -3973,6 +3973,12 @@ int q6asm_open_shared_io(struct audio_client *ac,
|
|||
if (!ac || !config)
|
||||
return -EINVAL;
|
||||
|
||||
if (config->channels > PCM_FORMAT_MAX_NUM_CHANNEL) {
|
||||
pr_err("%s: Invalid channel count %d\n", __func__,
|
||||
config->channels);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
bufsz = config->bufsz;
|
||||
bufcnt = config->bufcnt;
|
||||
num_watermarks = 0;
|
||||
|
@ -4432,6 +4438,13 @@ int q6asm_set_encdec_chan_map(struct audio_client *ac,
|
|||
int rc = 0;
|
||||
pr_debug("%s: Session %d, num_channels = %d\n",
|
||||
__func__, ac->session, num_channels);
|
||||
|
||||
if (num_channels > MAX_CHAN_MAP_CHANNELS) {
|
||||
pr_err("%s: Invalid channel count %d\n", __func__,
|
||||
num_channels);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
q6asm_add_hdr(ac, &chan_map.hdr, sizeof(chan_map), TRUE);
|
||||
atomic_set(&ac->cmd_state, -1);
|
||||
chan_map.hdr.opcode = ASM_STREAM_CMD_SET_ENCDEC_PARAM;
|
||||
|
@ -4510,6 +4523,12 @@ static int q6asm_enc_cfg_blk_pcm_v5(struct audio_client *ac,
|
|||
goto fail_cmd;
|
||||
}
|
||||
|
||||
if (channels > PCM_FORMAT_MAX_NUM_CHANNEL_V2) {
|
||||
pr_err("%s: Invalid channel count %d\n", __func__, channels);
|
||||
rc = -EINVAL;
|
||||
goto fail_cmd;
|
||||
}
|
||||
|
||||
pr_debug("%s: session[%d]rate[%d]ch[%d]bps[%d]wordsize[%d]\n", __func__,
|
||||
ac->session, rate, channels,
|
||||
bits_per_sample, sample_word_size);
|
||||
|
@ -4612,6 +4631,12 @@ int q6asm_enc_cfg_blk_pcm_v4(struct audio_client *ac,
|
|||
goto fail_cmd;
|
||||
}
|
||||
|
||||
if (channels > PCM_FORMAT_MAX_NUM_CHANNEL) {
|
||||
pr_err("%s: Invalid channel count %d\n", __func__, channels);
|
||||
rc = -EINVAL;
|
||||
goto fail_cmd;
|
||||
}
|
||||
|
||||
pr_debug("%s: session[%d]rate[%d]ch[%d]bps[%d]wordsize[%d]\n", __func__,
|
||||
ac->session, rate, channels,
|
||||
bits_per_sample, sample_word_size);
|
||||
|
@ -4711,6 +4736,12 @@ int q6asm_enc_cfg_blk_pcm_v3(struct audio_client *ac,
|
|||
goto fail_cmd;
|
||||
}
|
||||
|
||||
if (channels > PCM_FORMAT_MAX_NUM_CHANNEL) {
|
||||
pr_err("%s: Invalid channel count %d\n", __func__, channels);
|
||||
rc = -EINVAL;
|
||||
goto fail_cmd;
|
||||
}
|
||||
|
||||
pr_debug("%s: session[%d]rate[%d]ch[%d]bps[%d]wordsize[%d]\n", __func__,
|
||||
ac->session, rate, channels,
|
||||
bits_per_sample, sample_word_size);
|
||||
|
@ -4793,6 +4824,11 @@ int q6asm_enc_cfg_blk_pcm_v2(struct audio_client *ac,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (channels > PCM_FORMAT_MAX_NUM_CHANNEL) {
|
||||
pr_err("%s: Invalid channel count %d\n", __func__, channels);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pr_debug("%s: Session %d, rate = %d, channels = %d\n", __func__,
|
||||
ac->session, rate, channels);
|
||||
|
||||
|
@ -4985,9 +5021,13 @@ int q6asm_enc_cfg_blk_pcm_native(struct audio_client *ac,
|
|||
struct asm_multi_channel_pcm_enc_cfg_v2 enc_cfg;
|
||||
u8 *channel_mapping;
|
||||
u32 frames_per_buf = 0;
|
||||
|
||||
int rc = 0;
|
||||
|
||||
if (channels > PCM_FORMAT_MAX_NUM_CHANNEL) {
|
||||
pr_err("%s: Invalid channel count %d\n", __func__, channels);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pr_debug("%s: Session %d, rate = %d, channels = %d\n", __func__,
|
||||
ac->session, rate, channels);
|
||||
|
||||
|
@ -5535,6 +5575,11 @@ static int __q6asm_media_format_block_pcm(struct audio_client *ac,
|
|||
u8 *channel_mapping;
|
||||
int rc = 0;
|
||||
|
||||
if (channels > PCM_FORMAT_MAX_NUM_CHANNEL) {
|
||||
pr_err("%s: Invalid channel count %d\n", __func__, channels);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pr_debug("%s: session[%d]rate[%d]ch[%d]\n", __func__, ac->session, rate,
|
||||
channels);
|
||||
|
||||
|
@ -5617,6 +5662,11 @@ static int __q6asm_media_format_block_pcm_v3(struct audio_client *ac,
|
|||
u8 *channel_mapping;
|
||||
int rc;
|
||||
|
||||
if (channels > PCM_FORMAT_MAX_NUM_CHANNEL) {
|
||||
pr_err("%s: Invalid channel count %d\n", __func__, channels);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pr_debug("%s: session[%d]rate[%d]ch[%d]bps[%d]wordsize[%d]\n", __func__,
|
||||
ac->session, rate, channels,
|
||||
bits_per_sample, sample_word_size);
|
||||
|
@ -5700,6 +5750,11 @@ static int __q6asm_media_format_block_pcm_v4(struct audio_client *ac,
|
|||
u8 *channel_mapping;
|
||||
int rc;
|
||||
|
||||
if (channels > PCM_FORMAT_MAX_NUM_CHANNEL) {
|
||||
pr_err("%s: Invalid channel count %d\n", __func__, channels);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pr_debug("%s: session[%d]rate[%d]ch[%d]bps[%d]wordsize[%d]\n", __func__,
|
||||
ac->session, rate, channels,
|
||||
bits_per_sample, sample_word_size);
|
||||
|
@ -5888,6 +5943,11 @@ static int __q6asm_media_format_block_multi_ch_pcm(struct audio_client *ac,
|
|||
u8 *channel_mapping;
|
||||
int rc = 0;
|
||||
|
||||
if (channels > PCM_FORMAT_MAX_NUM_CHANNEL) {
|
||||
pr_err("%s: Invalid channel count %d\n", __func__, channels);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pr_debug("%s: session[%d]rate[%d]ch[%d]\n", __func__, ac->session, rate,
|
||||
channels);
|
||||
|
||||
|
@ -5955,6 +6015,11 @@ static int __q6asm_media_format_block_multi_ch_pcm_v3(struct audio_client *ac,
|
|||
u8 *channel_mapping;
|
||||
int rc;
|
||||
|
||||
if (channels > PCM_FORMAT_MAX_NUM_CHANNEL) {
|
||||
pr_err("%s: Invalid channel count %d\n", __func__, channels);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pr_debug("%s: session[%d]rate[%d]ch[%d]bps[%d]wordsize[%d]\n", __func__,
|
||||
ac->session, rate, channels,
|
||||
bits_per_sample, sample_word_size);
|
||||
|
@ -6026,6 +6091,11 @@ static int __q6asm_media_format_block_multi_ch_pcm_v4(struct audio_client *ac,
|
|||
u8 *channel_mapping;
|
||||
int rc;
|
||||
|
||||
if (channels > PCM_FORMAT_MAX_NUM_CHANNEL) {
|
||||
pr_err("%s: Invalid channel count %d\n", __func__, channels);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pr_debug("%s: session[%d]rate[%d]ch[%d]bps[%d]wordsize[%d]\n", __func__,
|
||||
ac->session, rate, channels,
|
||||
bits_per_sample, sample_word_size);
|
||||
|
@ -6099,6 +6169,12 @@ static int __q6asm_media_format_block_multi_ch_pcm_v5(struct audio_client *ac,
|
|||
u8 *channel_mapping;
|
||||
int rc;
|
||||
|
||||
if (channels > PCM_FORMAT_MAX_NUM_CHANNEL_V2) {
|
||||
pr_err("%s: Invalid channel count %d\n", __func__, channels);
|
||||
rc = -EINVAL;
|
||||
goto fail_cmd;
|
||||
}
|
||||
|
||||
pr_debug("%s: session[%d]rate[%d]ch[%d]bps[%d]wordsize[%d]\n", __func__,
|
||||
ac->session, rate, channels,
|
||||
bits_per_sample, sample_word_size);
|
||||
|
@ -6290,6 +6366,11 @@ int q6asm_media_format_block_gen_compr(struct audio_client *ac,
|
|||
u8 *channel_mapping;
|
||||
int rc = 0;
|
||||
|
||||
if (channels > PCM_FORMAT_MAX_NUM_CHANNEL) {
|
||||
pr_err("%s: Invalid channel count %d\n", __func__, channels);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pr_debug("%s: session[%d]rate[%d]ch[%d]bps[%d]\n",
|
||||
__func__, ac->session, rate,
|
||||
channels, bits_per_sample);
|
||||
|
|
Loading…
Add table
Reference in a new issue