media: em28xx: use a default format if TRY_FMT fails
authorMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Fri, 14 Sep 2018 03:22:40 +0000 (23:22 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 13 Nov 2018 19:15:11 +0000 (11:15 -0800)
commit f823ce2a1202d47110a7ef86b65839f0be8adc38 upstream.

Follow the V4L2 spec, as warned by v4l2-compliance:

warn: v4l2-test-formats.cpp(732): TRY_FMT cannot handle an invalid pixelformat.
warn: v4l2-test-formats.cpp(733): This may or may not be a problem. For more information see:

warn: v4l2-test-formats.cpp(734): http://www.mail-archive.com/linux-media@vger.kernel.org/msg56550.html

Cc: stable@vger.kernel.org
Fixes: bddcf63313c6 ("V4L/DVB (9927): em28xx: use a more standard way to specify video formats")
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/usb/em28xx/em28xx-video.c

index 8d253a5df0a9ff6dfbf195e01987b74f0689b0fc..73d8ae3d9bcf8fa6bd7e67bf7f03648f383363f4 100644 (file)
@@ -1445,9 +1445,9 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
 
        fmt = format_by_fourcc(f->fmt.pix.pixelformat);
        if (!fmt) {
-               em28xx_videodbg("Fourcc format (%08x) invalid.\n",
-                               f->fmt.pix.pixelformat);
-               return -EINVAL;
+               fmt = &format[0];
+               em28xx_videodbg("Fourcc format (%08x) invalid. Using default (%08x).\n",
+                               f->fmt.pix.pixelformat, fmt->fourcc);
        }
 
        if (dev->board.is_em2800) {