All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: linux-media@vger.kernel.org
Cc: Hans Verkuil <hans.verkuil@cisco.com>
Subject: Re: [PATCH 1/6] uvcvideo: Set error_idx properly for extended controls API failures
Date: Mon, 24 Dec 2012 13:27:08 +0100	[thread overview]
Message-ID: <1542143.Te5j8EM75x@avalon> (raw)
In-Reply-To: <1348758980-21683-2-git-send-email-laurent.pinchart@ideasonboard.com>

Hi Hans,

On Thursday 27 September 2012 17:16:15 Laurent Pinchart wrote:
> When one of the requested controls doesn't exist the error_idx field
> must reflect that situation. For G_EXT_CTRLS and S_EXT_CTRLS, error_idx
> must be set to the control count. For TRY_EXT_CTRLS, it must be set to
> the index of the unexisting control.
> 
> This issue was found by the v4l2-compliance tool.

I'm revisiting this patch as it has been reverted in v3.8-rc1.

> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
>  drivers/media/usb/uvc/uvc_ctrl.c |   17 ++++++++++-------
>  drivers/media/usb/uvc/uvc_v4l2.c |   19 ++++++++++++-------
>  2 files changed, 22 insertions(+), 14 deletions(-)

[snip]

> diff --git a/drivers/media/usb/uvc/uvc_v4l2.c
> b/drivers/media/usb/uvc/uvc_v4l2.c index f00db30..e5817b9 100644
> --- a/drivers/media/usb/uvc/uvc_v4l2.c
> +++ b/drivers/media/usb/uvc/uvc_v4l2.c
> @@ -591,8 +591,10 @@ static long uvc_v4l2_do_ioctl(struct file *file,

[snip]

> @@ -637,8 +639,9 @@ static long uvc_v4l2_do_ioctl(struct file *file,
> unsigned int cmd, void *arg) ret = uvc_ctrl_get(chain, ctrl);
>  			if (ret < 0) {
>  				uvc_ctrl_rollback(handle);
> -				ctrls->error_idx = i;
> -				return ret;
> +				ctrls->error_idx = ret == -ENOENT
> +						 ? ctrls->count : i;
> +				return ret == -ENOENT ? -EINVAL : ret;
>  			}
>  		}
>  		ctrls->error_idx = 0;
> @@ -661,8 +664,10 @@ static long uvc_v4l2_do_ioctl(struct file *file,
> unsigned int cmd, void *arg) ret = uvc_ctrl_set(chain, ctrl);
>  			if (ret < 0) {
>  				uvc_ctrl_rollback(handle);
> -				ctrls->error_idx = i;
> -				return ret;
> +				ctrls->error_idx = (ret == -ENOENT &&
> +						    cmd == VIDIOC_S_EXT_CTRLS)
> +						 ? ctrls->count : i;
> +				return ret == -ENOENT ? -EINVAL : ret;
>  			}
>  		}

I've reread the V4L2 specification, and the least I can say is that the text 
is pretty ambiguous. Let's clarify it.

Is there a reason to differentiate between invalid control IDs and other 
errors as far as error_idx is concerned ? It would be simpler if error_idx was 
set to the index of the first error for get and try operations, regardless of 
the error type. What do you think ?

-- 
Regards,

Laurent Pinchart


  parent reply	other threads:[~2012-12-24 12:25 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1348758980-21683-1-git-send-email-laurent.pinchart@ideasonboard.com>
     [not found] ` <1348758980-21683-5-git-send-email-laurent.pinchart@ideasonboard.com>
2012-11-16 14:00   ` [PATCH 4/6] uvcvideo: Set device_caps in VIDIOC_QUERYCAP Hans Verkuil
2012-11-23 12:20     ` Laurent Pinchart
2012-11-23 12:36       ` Hans Verkuil
     [not found] ` <1348758980-21683-7-git-send-email-laurent.pinchart@ideasonboard.com>
2012-11-16 14:07   ` [PATCH 6/6] uvcvideo: Add VIDIOC_[GS]_PRIORITY support Hans Verkuil
2012-11-23 12:30     ` Laurent Pinchart
2012-11-23 12:32     ` [PATCH v2 " Laurent Pinchart
2012-11-23 12:56       ` Hans Verkuil
2012-11-16 14:09 ` [PATCH 0/6] uvcvideo: V4L2 compliance fixes Hans Verkuil
     [not found] ` <1348758980-21683-2-git-send-email-laurent.pinchart@ideasonboard.com>
2012-12-24 12:27   ` Laurent Pinchart [this message]
2012-12-25 11:15     ` [PATCH 1/6] uvcvideo: Set error_idx properly for extended controls API failures Hans Verkuil
2012-12-25 11:23       ` Laurent Pinchart
2012-12-25 11:50         ` Hans Verkuil
2012-12-26 11:33           ` Laurent Pinchart
2012-12-26 14:00             ` Mauro Carvalho Chehab
2012-12-26 17:24               ` Laurent Pinchart
2012-12-27 11:59             ` Hans Verkuil
2012-12-27 12:04               ` Laurent Pinchart
2013-01-07 11:19               ` Hans Verkuil

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=1542143.Te5j8EM75x@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=hans.verkuil@cisco.com \
    --cc=linux-media@vger.kernel.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.