All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans Verkuil <hverkuil@xs4all.nl>
To: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>,
	linux-media@vger.kernel.org
Cc: Kamil Debski <kamil@wypas.org>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Subject: Re: [URGENT FOR v4.1] [PATCH v2] vb2: Don't WARN when v4l2_buffer.bytesused is 0 for multiplanar buffers
Date: Fri, 19 Jun 2015 14:04:16 +0200	[thread overview]
Message-ID: <55840540.3020906@xs4all.nl> (raw)
In-Reply-To: <1434715358-28325-1-git-send-email-laurent.pinchart+renesas@ideasonboard.com>

On 06/19/2015 02:02 PM, Laurent Pinchart wrote:
> Commit f61bf13b6a07 ("[media] vb2: add allow_zero_bytesused flag to the
> vb2_queue struct") added a WARN_ONCE to catch usage of a deprecated API
> using a zero value for v4l2_buffer.bytesused.
> 
> However, the condition is checked incorrectly, as the v4L2_buffer
> bytesused field is supposed to be ignored for multiplanar buffers. This
> results in spurious warnings when using the multiplanar API.
> 
> Fix it by checking v4l2_buffer.bytesused for uniplanar buffers and
> v4l2_plane.bytesused for multiplanar buffers.
> 
> Fixes: f61bf13b6a07 ("[media] vb2: add allow_zero_bytesused flag to the vb2_queue struct")
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

Acked-by: Hans Verkuil <hans.verkuil@cisco.com>

Thanks!

	Hans

> ---
>  drivers/media/v4l2-core/videobuf2-core.c | 33 ++++++++++++++++++++++----------
>  1 file changed, 23 insertions(+), 10 deletions(-)
> 
> Changes since v1:
> 
> - Rename __check_once to check_once
> - Drop __read_mostly on check_once
> - Use pr_warn instead of pr_warn_once
> 
> diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c
> index d835814a24d4..4eaf2f4f0294 100644
> --- a/drivers/media/v4l2-core/videobuf2-core.c
> +++ b/drivers/media/v4l2-core/videobuf2-core.c
> @@ -1242,6 +1242,23 @@ void vb2_discard_done(struct vb2_queue *q)
>  }
>  EXPORT_SYMBOL_GPL(vb2_discard_done);
>  
> +static void vb2_warn_zero_bytesused(struct vb2_buffer *vb)
> +{
> +	static bool check_once;
> +
> +	if (check_once)
> +		return;
> +
> +	check_once = true;
> +	__WARN();
> +
> +	pr_warn("use of bytesused == 0 is deprecated and will be removed in the future,\n");
> +	if (vb->vb2_queue->allow_zero_bytesused)
> +		pr_warn("use VIDIOC_DECODER_CMD(V4L2_DEC_CMD_STOP) instead.\n");
> +	else
> +		pr_warn("use the actual size instead.\n");
> +}
> +
>  /**
>   * __fill_vb2_buffer() - fill a vb2_buffer with information provided in a
>   * v4l2_buffer by the userspace. The caller has already verified that struct
> @@ -1252,16 +1269,6 @@ static void __fill_vb2_buffer(struct vb2_buffer *vb, const struct v4l2_buffer *b
>  {
>  	unsigned int plane;
>  
> -	if (V4L2_TYPE_IS_OUTPUT(b->type)) {
> -		if (WARN_ON_ONCE(b->bytesused == 0)) {
> -			pr_warn_once("use of bytesused == 0 is deprecated and will be removed in the future,\n");
> -			if (vb->vb2_queue->allow_zero_bytesused)
> -				pr_warn_once("use VIDIOC_DECODER_CMD(V4L2_DEC_CMD_STOP) instead.\n");
> -			else
> -				pr_warn_once("use the actual size instead.\n");
> -		}
> -	}
> -
>  	if (V4L2_TYPE_IS_MULTIPLANAR(b->type)) {
>  		if (b->memory == V4L2_MEMORY_USERPTR) {
>  			for (plane = 0; plane < vb->num_planes; ++plane) {
> @@ -1302,6 +1309,9 @@ static void __fill_vb2_buffer(struct vb2_buffer *vb, const struct v4l2_buffer *b
>  				struct v4l2_plane *pdst = &v4l2_planes[plane];
>  				struct v4l2_plane *psrc = &b->m.planes[plane];
>  
> +				if (psrc->bytesused == 0)
> +					vb2_warn_zero_bytesused(vb);
> +
>  				if (vb->vb2_queue->allow_zero_bytesused)
>  					pdst->bytesused = psrc->bytesused;
>  				else
> @@ -1336,6 +1346,9 @@ static void __fill_vb2_buffer(struct vb2_buffer *vb, const struct v4l2_buffer *b
>  		}
>  
>  		if (V4L2_TYPE_IS_OUTPUT(b->type)) {
> +			if (b->bytesused == 0)
> +				vb2_warn_zero_bytesused(vb);
> +
>  			if (vb->vb2_queue->allow_zero_bytesused)
>  				v4l2_planes[0].bytesused = b->bytesused;
>  			else
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in

  reply	other threads:[~2015-06-19 12:04 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-19 12:02 [URGENT FOR v4.1] [PATCH v2] vb2: Don't WARN when v4l2_buffer.bytesused is 0 for multiplanar buffers Laurent Pinchart
2015-06-19 12:04 ` Hans Verkuil [this message]
2015-06-19 12:05   ` Kamil Debski
2015-06-23 12:51     ` Kamil Debski
2015-06-23 22:35       ` Laurent Pinchart
2015-06-19 12:05 ` Marek Szyprowski

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=55840540.3020906@xs4all.nl \
    --to=hverkuil@xs4all.nl \
    --cc=kamil@wypas.org \
    --cc=laurent.pinchart+renesas@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=mchehab@osg.samsung.com \
    /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.