提交 29c50897 编写于 作者: A André Almeida 提交者: Xie XiuQi

media: vimc: cap: check v4l2_fill_pixfmt return value

[ 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: NAndré Almeida <andrealmeid@collabora.com>
Suggested-by: NHelen Koike <helen.koike@collabora.com>
Signed-off-by: NHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: NSasha Levin <sashal@kernel.org>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 0e7e995a
...@@ -132,12 +132,15 @@ static int vimc_cap_s_fmt_vid_cap(struct file *file, void *priv, ...@@ -132,12 +132,15 @@ static int vimc_cap_s_fmt_vid_cap(struct file *file, void *priv,
struct v4l2_format *f) struct v4l2_format *f)
{ {
struct vimc_cap_device *vcap = video_drvdata(file); struct vimc_cap_device *vcap = video_drvdata(file);
int ret;
/* Do not change the format while stream is on */ /* Do not change the format while stream is on */
if (vb2_is_busy(&vcap->queue)) if (vb2_is_busy(&vcap->queue))
return -EBUSY; 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: " dev_dbg(vcap->dev, "%s: format update: "
"old:%dx%d (0x%x, %d, %d, %d, %d) " "old:%dx%d (0x%x, %d, %d, %d, %d) "
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册