From 3d61b368d7108b1687fd28445785b7d253fea9e7 Mon Sep 17 00:00:00 2001 From: Dhananjay Kumar Date: Fri, 1 Mar 2019 15:47:56 +0530 Subject: [PATCH] dsp: adm: add check for mfc channel count Add check for mfc channel count before issuing mfc media format command. Change-Id: I0541d6651ecfcc90562ec0d9a632d039e34658cf Signed-off-by: Dhananjay Kumar --- dsp/q6adm.c | 5 +++++ include/dsp/apr_audio-v2.h | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/dsp/q6adm.c b/dsp/q6adm.c index 8c8b61497d51..345123ffaa94 100644 --- a/dsp/q6adm.c +++ b/dsp/q6adm.c @@ -2797,6 +2797,11 @@ static int adm_copp_set_ec_ref_mfc_cfg(int port_id, int copp_idx, __func__, port_id, copp_idx, sample_rate, bps, in_channels, out_channels); + if (out_channels <= 0 || out_channels > AUDPROC_MFC_OUT_CHANNELS_MAX) { + pr_err("%s: unsupported out channels=%d\n", __func__, out_channels); + return -EINVAL; + } + /* 1. Update Media Format */ param_hdr.param_id = AUDPROC_PARAM_ID_MFC_OUTPUT_MEDIA_FORMAT; param_hdr.param_size = sizeof(mfc_cfg); diff --git a/include/dsp/apr_audio-v2.h b/include/dsp/apr_audio-v2.h index e7c132a69587..8bff49968d00 100644 --- a/include/dsp/apr_audio-v2.h +++ b/include/dsp/apr_audio-v2.h @@ -874,11 +874,14 @@ struct adm_cmd_set_pp_params_v5 { */ } __packed; +/* Maximum number of channels supported by MFC media fmt params */ +#define AUDPROC_MFC_OUT_CHANNELS_MAX 8 + struct audproc_mfc_param_media_fmt { uint32_t sampling_rate; uint16_t bits_per_sample; uint16_t num_channels; - uint16_t channel_type[8]; + uint16_t channel_type[AUDPROC_MFC_OUT_CHANNELS_MAX]; } __packed; struct audproc_volume_ctrl_master_gain {