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

Commit dbad92f6 authored by Meng Wang's avatar Meng Wang Committed by Will Mcvicker
Browse files

ANDROID: GKI: ASoC: msm: fix integer overflow for long duration offload playback



32 bit variable is used for storing number of bytes copied to DSP,
which can overflow when playback duration goes beyond 24 hours.
Change data type for this variable to uint64_t to prevent overflow
and related playback anomaly.

Bug: 153747771
Test: compile
CRs-Fixed: 877677
Change-Id: Ie4dfa630cf89559bb784d4712c52526665baeca6
Signed-off-by: default avatarDhananjay Kumar <dhakumar@codeaurora.org>
Signed-off-by: default avatarBanajit Goswami <bgoswami@codeaurora.org>
Signed-off-by: default avatarMeng Wang <mwang@codeaurora.org>
(cherry picked from commit 53967107)
Signed-off-by: default avatarWill McVicker <willmcvicker@google.com>
[willmcvicker: fixed merged conflict in compress_offload.c]
parent a21df153
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ struct snd_compr_params {
 */
struct snd_compr_tstamp {
	__u32 byte_offset;
	__u32 copied_total;
	__u64 copied_total;
	__u32 pcm_frames;
	__u32 pcm_io_frames;
	__u32 sampling_rate;
+1 −1
Original line number Diff line number Diff line
@@ -183,7 +183,7 @@ static int snd_compr_update_tstamp(struct snd_compr_stream *stream,
	if (!stream->ops->pointer)
		return -ENOTSUPP;
	stream->ops->pointer(stream, tstamp);
	pr_debug("dsp consumed till %d total %d bytes\n",
	pr_debug("dsp consumed till %d total %llu bytes\n",
		tstamp->byte_offset, tstamp->copied_total);
	if (stream->direction == SND_COMPRESS_PLAYBACK)
		stream->runtime->total_bytes_transferred = tstamp->copied_total;