All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ricardo Ribalda <ribalda@chromium.org>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Hans Verkuil <hverkuil-cisco@xs4all.nl>,
	Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
	linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
	tfiga@chromium.org
Cc: Ricardo Ribalda <ribalda@chromium.org>
Subject: [PATCH v5 12/13] media: v4l2-ioctl: Set error_idx to the right value
Date: Tue, 16 Mar 2021 19:00:02 +0100	[thread overview]
Message-ID: <20210316180004.1605727-13-ribalda@chromium.org> (raw)
In-Reply-To: <20210316180004.1605727-1-ribalda@chromium.org>

If an error is found when validating the list of controls passed with
VIDIOC_G_EXT_CTRLS, then error_idx shall be set to ctrls->count to
indicate to userspace that no actual hardware was touched.

It would have been much nicer of course if error_idx could point to the
control index that failed the validation, but sadly that's not how the
API was designed.

Fixes v4l2-compliance:
Control ioctls (Input 0):
	warn: v4l2-test-controls.cpp(834): error_idx should be equal to count
	warn: v4l2-test-controls.cpp(855): error_idx should be equal to count
	test VIDIOC_G/S/TRY_EXT_CTRLS: OK

Fixes: 6fa6f831f095 ("media: v4l2-ctrls: add core request support")
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
 drivers/media/v4l2-core/v4l2-ioctl.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
index 9406e90ff805..936ae21a0e0e 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -2294,8 +2294,12 @@ static int v4l_g_ext_ctrls(const struct v4l2_ioctl_ops *ops,
 					vfd, vfd->v4l2_dev->mdev, p);
 	if (ops->vidioc_g_ext_ctrls == NULL)
 		return -ENOTTY;
-	return check_ext_ctrls(p, 0) ? ops->vidioc_g_ext_ctrls(file, fh, p) :
-					-EINVAL;
+
+	if (check_ext_ctrls(p, 0))
+		return ops->vidioc_g_ext_ctrls(file, fh, p);
+
+	p->error_idx = p->count;
+	return -EINVAL;
 }
 
 static int v4l_s_ext_ctrls(const struct v4l2_ioctl_ops *ops,
@@ -2315,8 +2319,11 @@ static int v4l_s_ext_ctrls(const struct v4l2_ioctl_ops *ops,
 					vfd, vfd->v4l2_dev->mdev, p);
 	if (ops->vidioc_s_ext_ctrls == NULL)
 		return -ENOTTY;
-	return check_ext_ctrls(p, 0) ? ops->vidioc_s_ext_ctrls(file, fh, p) :
-					-EINVAL;
+	if (check_ext_ctrls(p, 0))
+		return ops->vidioc_s_ext_ctrls(file, fh, p);
+
+	p->error_idx = p->count;
+	return -EINVAL;
 }
 
 static int v4l_try_ext_ctrls(const struct v4l2_ioctl_ops *ops,
-- 
2.31.0.rc2.261.g7f71774620-goog


  parent reply	other threads:[~2021-03-16 18:03 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-16 17:59 [PATCH v5 00/13] uvcvideo: Fix v4l2-compliance errors Ricardo Ribalda
2021-03-16 17:59 ` [PATCH v5 01/13] media: v4l2-ioctl: Fix check_ext_ctrls Ricardo Ribalda
2021-03-17 10:36   ` Hans Verkuil
2021-03-16 17:59 ` [PATCH v5 02/13] media: uvcvideo: Set capability in s_param Ricardo Ribalda
2021-03-16 17:59 ` [PATCH v5 03/13] media: uvcvideo: Return -EIO for control errors Ricardo Ribalda
2021-03-16 17:59 ` [PATCH v5 04/13] media: uvcvideo: Check controls flags before accessing them Ricardo Ribalda
2021-03-17 10:50   ` Hans Verkuil
2021-03-16 17:59 ` [PATCH v5 05/13] media: uvcvideo: refactor __uvc_ctrl_add_mapping Ricardo Ribalda
2021-03-16 17:59 ` [PATCH v5 06/13] media: uvcvideo: Add support for V4L2_CTRL_TYPE_CTRL_CLASS Ricardo Ribalda
2021-03-16 17:59 ` [PATCH v5 07/13] media: uvcvideo: Use dev->name for querycap() Ricardo Ribalda
2021-03-17 10:57   ` Hans Verkuil
2021-03-16 17:59 ` [PATCH v5 08/13] media: uvcvideo: Set unique vdev name based in type Ricardo Ribalda
2021-03-16 17:59 ` [PATCH v5 09/13] media: uvcvideo: Increase the size of UVC_METADATA_BUF_SIZE Ricardo Ribalda
2021-03-17 11:01   ` Hans Verkuil
2021-03-16 18:00 ` [PATCH v5 10/13] media: uvcvideo: Return -EACCES to inactive controls Ricardo Ribalda
2021-03-17 11:26   ` Hans Verkuil
2021-03-16 18:00 ` [PATCH v5 11/13] media: uvcvideo: Use control names from framework Ricardo Ribalda
2021-03-17 11:29   ` Hans Verkuil
2021-03-16 18:00 ` Ricardo Ribalda [this message]
2021-03-17 11:39   ` [PATCH v5 12/13] media: v4l2-ioctl: Set error_idx to the right value Hans Verkuil
2021-03-16 18:00 ` [PATCH v5 13/13] uvc: use vb2 ioctl and fop helpers Ricardo Ribalda

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210316180004.1605727-13-ribalda@chromium.org \
    --to=ribalda@chromium.org \
    --cc=hverkuil-cisco@xs4all.nl \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=sergey.senozhatsky@gmail.com \
    --cc=tfiga@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.