From dbad92f6e8b6447f5086a41296c014d56cd95117 Mon Sep 17 00:00:00 2001 From: Meng Wang Date: Tue, 12 Sep 2017 15:58:19 +0800 Subject: [PATCH] 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: Dhananjay Kumar Signed-off-by: Banajit Goswami Signed-off-by: Meng Wang (cherry picked from commit 5396710759fcf2595e76e180940f7aa4302ac6dc) Signed-off-by: Will McVicker [willmcvicker: fixed merged conflict in compress_offload.c] --- include/uapi/sound/compress_offload.h | 2 +- sound/core/compress_offload.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/uapi/sound/compress_offload.h b/include/uapi/sound/compress_offload.h index 56d95673ce0f..db5edf3f827b 100644 --- a/include/uapi/sound/compress_offload.h +++ b/include/uapi/sound/compress_offload.h @@ -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; diff --git a/sound/core/compress_offload.c b/sound/core/compress_offload.c index 509038d6bccd..9121e9656454 100644 --- a/sound/core/compress_offload.c +++ b/sound/core/compress_offload.c @@ -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;