diff options
author | SecurityBot AutoMerger <android-nexus-securitybot@system.gserviceaccount.com> | 2019-12-20 14:14:55 -0800 |
---|---|---|
committer | SecurityBot <android-nexus-securitybot@system.gserviceaccount.com> | 2019-12-20 14:14:56 -0800 |
commit | 6884dd32b830a51f8c7122886427e9b1c8000c25 (patch) | |
tree | 0ac0b565c583a35faccb73372bc2aa5735eeb011 | |
parent | 3ab4335efed7b725b85f58bcfde465a5f0d91666 (diff) | |
parent | 4b7a91f83130ce888b0f05eaec406879ee3f4d87 (diff) | |
download | msm-extra-6884dd32b830a51f8c7122886427e9b1c8000c25.tar.gz |
Merge android-msm-floral-4.14-qt-qpr2 into android-msm-floral-4.14
SBMerger: 284775313
Change-Id: Iad1462839c5c42687572b07e6e23d129b5c4a303
Signed-off-by: SecurityBot <android-nexus-securitybot@system.gserviceaccount.com>
-rw-r--r-- | asoc/codecs/bolero/rx-macro.c | 18 | ||||
-rw-r--r-- | asoc/codecs/bolero/wsa-macro.c | 19 |
2 files changed, 29 insertions, 8 deletions
diff --git a/asoc/codecs/bolero/rx-macro.c b/asoc/codecs/bolero/rx-macro.c index bc9eea79..c9af45b4 100644 --- a/asoc/codecs/bolero/rx-macro.c +++ b/asoc/codecs/bolero/rx-macro.c @@ -1765,14 +1765,23 @@ static int rx_macro_mux_put(struct snd_kcontrol *kcontrol, dev_err(rx_dev, "%s:AIF reset already\n", __func__); return 0; } + if (aif_rst > RX_MACRO_AIF4_PB) { + dev_err(rx_dev, "%s: Invalid AIF reset\n", __func__); + return 0; + } } rx_priv->rx_port_value[widget->shift] = rx_port_value; + dev_dbg(rx_dev, "%s: mux input: %d, mux output: %d, aif_rst: %d\n", + __func__, rx_port_value, widget->shift, aif_rst); + switch (rx_port_value) { case 0: - clear_bit(widget->shift, - &rx_priv->active_ch_mask[aif_rst]); - rx_priv->active_ch_cnt[aif_rst]--; + if (rx_priv->active_ch_cnt[aif_rst]) { + clear_bit(widget->shift, + &rx_priv->active_ch_mask[aif_rst]); + rx_priv->active_ch_cnt[aif_rst]--; + } break; case 1: case 2: @@ -1784,7 +1793,8 @@ static int rx_macro_mux_put(struct snd_kcontrol *kcontrol, break; default: dev_err(codec->dev, - "%s:Invalid AIF_ID for RX_MACRO MUX\n", __func__); + "%s:Invalid AIF_ID for RX_MACRO MUX %d\n", + __func__, rx_port_value); goto err; } diff --git a/asoc/codecs/bolero/wsa-macro.c b/asoc/codecs/bolero/wsa-macro.c index ab00633a..e30872ba 100644 --- a/asoc/codecs/bolero/wsa-macro.c +++ b/asoc/codecs/bolero/wsa-macro.c @@ -1973,6 +1973,10 @@ static int wsa_macro_rx_mux_put(struct snd_kcontrol *kcontrol, dev_err(wsa_dev, "%s: AIF reset already\n", __func__); return 0; } + if (aif_rst >= WSA_MACRO_RX_MAX) { + dev_err(wsa_dev, "%s: Invalid AIF reset\n", __func__); + return 0; + } } wsa_priv->rx_port_value[widget->shift] = rx_port_value; @@ -1980,11 +1984,17 @@ static int wsa_macro_rx_mux_put(struct snd_kcontrol *kcontrol, if (widget->shift >= WSA_MACRO_RX_MIX) bit_input %= WSA_MACRO_RX_MIX; + dev_dbg(wsa_dev, + "%s: mux input: %d, mux output: %d, bit: %d\n", + __func__, rx_port_value, widget->shift, bit_input); + switch (rx_port_value) { case 0: - clear_bit(bit_input, - &wsa_priv->active_ch_mask[aif_rst]); - wsa_priv->active_ch_cnt[aif_rst]--; + if (wsa_priv->active_ch_cnt[aif_rst]) { + clear_bit(bit_input, + &wsa_priv->active_ch_mask[aif_rst]); + wsa_priv->active_ch_cnt[aif_rst]--; + } break; case 1: case 2: @@ -1994,7 +2004,8 @@ static int wsa_macro_rx_mux_put(struct snd_kcontrol *kcontrol, break; default: dev_err(wsa_dev, - "%s: Invalid AIF_ID for WSA RX MUX\n", __func__); + "%s: Invalid AIF_ID for WSA RX MUX %d\n", + __func__, rx_port_value); return -EINVAL; } |