lkml.org 
[lkml]   [2019]   [Dec]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 056/161] media: ti-vpe: vpe: fix a v4l2-compliance failure about invalid sizeimage
    Date
    From: Benoit Parrot <bparrot@ti.com>

    [ Upstream commit 0bac73adea4df8d34048b38f6ff24dc3e73e90b6 ]

    v4l2-compliance fails with this message:

    fail: v4l2-test-formats.cpp(463): !pfmt.sizeimage
    fail: v4l2-test-formats.cpp(736): \
    Video Capture Multiplanar is valid, \
    but TRY_FMT failed to return a format
    test VIDIOC_TRY_FMT: FAIL

    This failure is causd by the driver failing to handle out range
    'bytesperline' values from user space applications.

    VPDMA hardware is limited to 64k line stride (16 bytes aligned, so 65520
    bytes). So make sure the provided or calculated 'bytesperline' is
    smaller than the maximum value.

    Signed-off-by: Benoit Parrot <bparrot@ti.com>
    Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/media/platform/ti-vpe/vpdma.h | 1 +
    drivers/media/platform/ti-vpe/vpe.c | 4 ++++
    2 files changed, 5 insertions(+)

    diff --git a/drivers/media/platform/ti-vpe/vpdma.h b/drivers/media/platform/ti-vpe/vpdma.h
    index 7e611501c291..f29074c84915 100644
    --- a/drivers/media/platform/ti-vpe/vpdma.h
    +++ b/drivers/media/platform/ti-vpe/vpdma.h
    @@ -60,6 +60,7 @@ struct vpdma_data_format {
    * line stride of source and dest
    * buffers should be 16 byte aligned
    */
    +#define VPDMA_MAX_STRIDE 65520 /* Max line stride 16 byte aligned */
    #define VPDMA_DTD_DESC_SIZE 32 /* 8 words */
    #define VPDMA_CFD_CTD_DESC_SIZE 16 /* 4 words */

    diff --git a/drivers/media/platform/ti-vpe/vpe.c b/drivers/media/platform/ti-vpe/vpe.c
    index 7af66fe95a54..2e8970c7e22d 100644
    --- a/drivers/media/platform/ti-vpe/vpe.c
    +++ b/drivers/media/platform/ti-vpe/vpe.c
    @@ -1702,6 +1702,10 @@ static int __vpe_try_fmt(struct vpe_ctx *ctx, struct v4l2_format *f,
    if (stride > plane_fmt->bytesperline)
    plane_fmt->bytesperline = stride;

    + plane_fmt->bytesperline = clamp_t(u32, plane_fmt->bytesperline,
    + stride,
    + VPDMA_MAX_STRIDE);
    +
    plane_fmt->bytesperline = ALIGN(plane_fmt->bytesperline,
    VPDMA_STRIDE_ALIGN);

    --
    2.20.1


    \
     
     \ /
      Last update: 2019-12-29 18:23    [W:4.489 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site