]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: vimc: cap: check v4l2_fill_pixfmt return value
authorAndré Almeida <andrealmeid@collabora.com>
Mon, 17 Jun 2019 16:28:02 +0000 (12:28 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 31 Jul 2019 05:28:28 +0000 (07:28 +0200)
[ Upstream commit 77ae46e11df5c96bb4582633851f838f5d954df4 ]

v4l2_fill_pixfmt() returns -EINVAL if the pixelformat used as parameter is
invalid or if the user is trying to use a multiplanar format with the
singleplanar API. Currently, the vimc_cap_try_fmt_vid_cap() returns such
value, but vimc_cap_s_fmt_vid_cap() is ignoring it. Fix that and returns
an error value if vimc_cap_try_fmt_vid_cap() has failed.

Signed-off-by: André Almeida <andrealmeid@collabora.com>
Suggested-by: Helen Koike <helen.koike@collabora.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/vimc/vimc-capture.c

index a078ad18909a54d8e14ee155e6ca4c8c8a4db087..091921ed09dd4be689ea201e716d996ae954b4c8 100644 (file)
@@ -131,12 +131,15 @@ static int vimc_cap_s_fmt_vid_cap(struct file *file, void *priv,
                                  struct v4l2_format *f)
 {
        struct vimc_cap_device *vcap = video_drvdata(file);
+       int ret;
 
        /* Do not change the format while stream is on */
        if (vb2_is_busy(&vcap->queue))
                return -EBUSY;
 
-       vimc_cap_try_fmt_vid_cap(file, priv, f);
+       ret = vimc_cap_try_fmt_vid_cap(file, priv, f);
+       if (ret)
+               return ret;
 
        dev_dbg(vcap->dev, "%s: format update: "
                "old:%dx%d (0x%x, %d, %d, %d, %d) "