lkml.org 
[lkml]   [2018]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 087/410] media: exynos4-is: properly initialize frame format
    3.16.57-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Arnd Bergmann <arnd@arndb.de>

    commit 97913bcbe6da3957af27d9fdd76b3d97b99e6d6a upstream.

    We copy the subdev frame format from a partially initialized
    structure, which is not entirely well-defined. Older compilers
    like gcc-4.4 can copy uninitialized stack data here and warn
    about it:

    drivers/media/platform/exynos4-is/fimc-isp.c: In function 'fimc_isp_subdev_open':
    drivers/media/platform/exynos4-is/fimc-isp.c:379: error: 'fmt.reserved[10u]' may be used uninitialized in this function
    drivers/media/platform/exynos4-is/fimc-isp.c:379: error: 'fmt.reserved[9u]' may be used uninitialized in this function
    ...
    drivers/media/platform/exynos4-is/fimc-isp.c:379: error: 'fmt.reserved[0u]' may be used uninitialized in this function
    drivers/media/platform/exynos4-is/fimc-isp.c:379: error: 'fmt.xfer_func' may be used uninitialized in this function

    On newer compilers, only the initialized fields get copied, but
    we should not rely on that, so this changes the code to zero-out
    the remaining fields first.

    Fixes: 9a761e436843 ("[media] exynos4-is: Add Exynos4x12 FIMC-IS driver")

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    drivers/media/platform/exynos4-is/fimc-isp.c | 14 +++++++-------
    1 file changed, 7 insertions(+), 7 deletions(-)

    --- a/drivers/media/platform/exynos4-is/fimc-isp.c
    +++ b/drivers/media/platform/exynos4-is/fimc-isp.c
    @@ -366,16 +366,16 @@ static int fimc_isp_subdev_s_power(struc
    static int fimc_isp_subdev_open(struct v4l2_subdev *sd,
    struct v4l2_subdev_fh *fh)
    {
    - struct v4l2_mbus_framefmt fmt;
    struct v4l2_mbus_framefmt *format;
    + struct v4l2_mbus_framefmt fmt = {
    + .colorspace = V4L2_COLORSPACE_SRGB,
    + .code = fimc_isp_formats[0].mbus_code,
    + .width = DEFAULT_PREVIEW_STILL_WIDTH + FIMC_ISP_CAC_MARGIN_WIDTH,
    + .height = DEFAULT_PREVIEW_STILL_HEIGHT + FIMC_ISP_CAC_MARGIN_HEIGHT,
    + .field = V4L2_FIELD_NONE,
    + };

    format = v4l2_subdev_get_try_format(fh, FIMC_ISP_SD_PAD_SINK);
    -
    - fmt.colorspace = V4L2_COLORSPACE_SRGB;
    - fmt.code = fimc_isp_formats[0].mbus_code;
    - fmt.width = DEFAULT_PREVIEW_STILL_WIDTH + FIMC_ISP_CAC_MARGIN_WIDTH;
    - fmt.height = DEFAULT_PREVIEW_STILL_HEIGHT + FIMC_ISP_CAC_MARGIN_HEIGHT;
    - fmt.field = V4L2_FIELD_NONE;
    *format = fmt;

    format = v4l2_subdev_get_try_format(fh, FIMC_ISP_SD_PAD_SRC_FIFO);
    \
     
     \ /
      Last update: 2018-06-07 18:06    [W:4.825 / U:1.868 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site