mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 14:19:09 -04:00
Merge "ASoC: msm-pcm-voip: Avoid interger underflow"
This commit is contained in:
commit
98fd7ebdbc
1 changed files with 22 additions and 0 deletions
|
|
@ -1,5 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/init.h>
|
||||
|
|
@ -365,6 +366,13 @@ static void voip_process_ul_pkt(uint8_t *voc_pkt,
|
|||
switch (prtd->mode) {
|
||||
case MODE_AMR_WB:
|
||||
case MODE_AMR: {
|
||||
if (pkt_len <= DSP_FRAME_HDR_LEN) {
|
||||
pr_err("%s: pkt_len %d is < required len\n",
|
||||
pkt_len);
|
||||
spin_unlock_irqrestore(&prtd->dsp_ul_lock,
|
||||
dsp_flags);
|
||||
return;
|
||||
}
|
||||
/* Remove the DSP frame info header. Header format:
|
||||
* Bits 0-3: Frame rate
|
||||
* Bits 4-7: Frame type
|
||||
|
|
@ -385,6 +393,13 @@ static void voip_process_ul_pkt(uint8_t *voc_pkt,
|
|||
case MODE_4GV_NB:
|
||||
case MODE_4GV_WB:
|
||||
case MODE_4GV_NW: {
|
||||
if (pkt_len <= DSP_FRAME_HDR_LEN) {
|
||||
pr_err("%s: pkt_len %d is < required len\n",
|
||||
pkt_len);
|
||||
spin_unlock_irqrestore(&prtd->dsp_ul_lock,
|
||||
dsp_flags);
|
||||
return;
|
||||
}
|
||||
/* Remove the DSP frame info header.
|
||||
* Header format:
|
||||
* Bits 0-3: frame rate
|
||||
|
|
@ -422,6 +437,13 @@ static void voip_process_ul_pkt(uint8_t *voc_pkt,
|
|||
buf_node->frame.frm_hdr.timestamp = timestamp;
|
||||
voc_pkt = voc_pkt + DSP_FRAME_HDR_LEN;
|
||||
|
||||
if (pkt_len <= 2 * DSP_FRAME_HDR_LEN) {
|
||||
pr_err("%s: pkt_len %d is < required len\n",
|
||||
pkt_len);
|
||||
spin_unlock_irqrestore(&prtd->dsp_ul_lock,
|
||||
dsp_flags);
|
||||
return;
|
||||
}
|
||||
/* There are two frames in the buffer. Length of the
|
||||
* first frame:
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in a new issue