aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorVikash Garodia <vgarodia@codeaurora.org>2018-10-08 07:09:04 -0400
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>2018-10-09 08:07:07 -0400
commitce32c0a530bd955206fe45c2eff77e581202d699 (patch)
tree7c79197fa331ced650b868af9e39829c79c5156b /drivers/media
parentmedia: cx231xx: fix potential sign-extension overflow on large shift (diff)
downloadlinux-dev-ce32c0a530bd955206fe45c2eff77e581202d699.tar.xz
linux-dev-ce32c0a530bd955206fe45c2eff77e581202d699.zip
media: venus: vdec: fix decoded data size
Existing code returns the max of the decoded size and buffer size. It turns out that buffer size is always greater due to hardware alignment requirement. As a result, payload size given to client is incorrect. This change ensures that the bytesused is assigned to actual payload size, when available. Signed-off-by: Vikash Garodia <vgarodia@codeaurora.org> Acked-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/platform/qcom/venus/vdec.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c
index 991e1583b92a..189ec975c6bb 100644
--- a/drivers/media/platform/qcom/venus/vdec.c
+++ b/drivers/media/platform/qcom/venus/vdec.c
@@ -888,8 +888,7 @@ static void vdec_buf_done(struct venus_inst *inst, unsigned int buf_type,
unsigned int opb_sz = venus_helper_get_opb_size(inst);
vb = &vbuf->vb2_buf;
- vb->planes[0].bytesused =
- max_t(unsigned int, opb_sz, bytesused);
+ vb2_set_plane_payload(vb, 0, bytesused ? : opb_sz);
vb->planes[0].data_offset = data_offset;
vb->timestamp = timestamp_us * NSEC_PER_USEC;
vbuf->sequence = inst->sequence_cap++;