All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sergey Senozhatsky <senozhatsky@chromium.org>
To: Ricardo Ribalda <ribalda@chromium.org>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Tomasz Figa <tfiga@chromium.org>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Hans Verkuil <hverkuil-cisco@xs4all.nl>,
	Linux Media Mailing List <linux-media@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCHv3 5/6] media: uvcvideo: add UVC 1.5 ROI control
Date: Wed, 24 Mar 2021 11:01:12 +0900	[thread overview]
Message-ID: <YFqdaHCQak5ZM0Sf@google.com> (raw)
In-Reply-To: <CANiDSCt72o_E=gRBRhMWWmta-H2WGmDqg5_PBGHBrVCG4iepZw@mail.gmail.com>

On (21/03/23 17:16), Ricardo Ribalda wrote:
[..]
> > +static bool validate_roi_bounds(struct uvc_streaming *stream,
> > +                               struct v4l2_selection *sel)
> > +{
> > +       if (sel->r.left > USHRT_MAX ||
> > +           sel->r.top > USHRT_MAX ||
> > +           (sel->r.width + sel->r.left) > USHRT_MAX ||
> > +           (sel->r.height + sel->r.top) > USHRT_MAX ||
> > +           !sel->r.width || !sel->r.height)
> > +               return false;
> > +
> > +       if (sel->flags > V4L2_SEL_FLAG_ROI_AUTO_HIGHER_QUALITY)
> > +               return false;
> 
> Is it not allowed V4L2_SEL_FLAG_ROI_AUTO_IRIS |
> V4L2_SEL_FLAG_ROI_AUTO_HIGHER_QUALITY   ?

Good question.

I don't know. Depends on what HIGHER_QUALITY can stand for (UVC doesn't
specify). But overall it seems like features there are mutually
exclusive. E.g. AUTO_FACE_DETECT and AUTO_DETECT_AND_TRACK.


I think it'll be better to replace this with

	if (sel->flags > USHRT_MAX)
		return false;

so that we don't let overflow happen and accidentally enable/disable
some of the features.

> > +
> > +       return true;
> > +}
> > +
> > +static int uvc_ioctl_s_roi(struct file *file, void *fh,
> > +                          struct v4l2_selection *sel)
> > +{
> > +       struct uvc_fh *handle = fh;
> > +       struct uvc_streaming *stream = handle->stream;
> > +       struct uvc_roi_rect *roi;
> > +       int ret;
> > +
> > +       if (!validate_roi_bounds(stream, sel))
> > +               return -E2BIG;
> 
> Not sure if this is the correct approach or if we should convert the
> value to the closest valid...

Well, at this point we know that ROI rectangle dimensions are out of
sane value range. I'd rather tell user-space about integer overflow.

Looking for the closest ROI rectangle that suffice can be rather
tricky. It may sounds like we can just use BOUNDARIES_MAX, but this
is what Firmware D returns for GET_MAX

ioctl(V4L2_SEL_TGT_ROI_BOUNDS_MAX)

	0, 0, 65535, 65535

	-ss

  reply	other threads:[~2021-03-24  2:02 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-19  5:53 [PATCHv3 0/6] media: uvcvideo: implement UVC 1.5 ROI Sergey Senozhatsky
2021-03-19  5:53 ` [PATCHv3 1/6] media: v4l UAPI: add ROI selection targets Sergey Senozhatsky
2021-03-19  5:53 ` [PATCHv3 2/6] media: v4l UAPI: document " Sergey Senozhatsky
2021-03-23 16:05   ` Ricardo Ribalda
2021-03-19  5:53 ` [PATCHv3 3/6] media: v4l UAPI: add ROI auto-controls flags Sergey Senozhatsky
2021-03-23 16:04   ` Ricardo Ribalda
2021-03-24  2:22     ` Sergey Senozhatsky
2021-03-24  7:28       ` Ricardo Ribalda
2021-03-24  7:35         ` Sergey Senozhatsky
2021-03-19  5:53 ` [PATCHv3 4/6] media: v4l UAPI: document " Sergey Senozhatsky
2021-03-19  5:53 ` [PATCHv3 5/6] media: uvcvideo: add UVC 1.5 ROI control Sergey Senozhatsky
2021-03-23 16:16   ` Ricardo Ribalda
2021-03-24  2:01     ` Sergey Senozhatsky [this message]
2021-03-24  2:14       ` Tomasz Figa
2021-03-24  2:31         ` Sergey Senozhatsky
2021-03-24  2:34           ` Tomasz Figa
2021-03-24  2:52             ` Sergey Senozhatsky
2021-03-24  3:00               ` Tomasz Figa
2021-03-24  3:05                 ` Sergey Senozhatsky
2021-03-24  3:08                   ` Sergey Senozhatsky
2021-03-19  5:53 ` [PATCHv3 6/6] MAINTAINERS: update Senozhatsky email address Sergey Senozhatsky
2021-03-19  5:56   ` Sergey Senozhatsky

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=YFqdaHCQak5ZM0Sf@google.com \
    --to=senozhatsky@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=ribalda@chromium.org \
    --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.