Re: [PATCH] media: m2m-deinterlace: fix default capture field
Jacopo Mondi <[email protected]>
| Newsgroups | org.kernel.vger.linux-media,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <anr1DLTi2UUdWWZ0@zed> |
Hi Xu Rao On Tue, Aug 11, 2026 at 09:52:22AM +0800, raoxu wrote: > From: Xu Rao <[email protected]> > > queue_init() initializes default formats for both the source and capture > queues. It first sets the source field to V4L2_FIELD_SEQ_TB, but then > stores the capture default, V4L2_FIELD_INTERLACED_TB, in the source queue > again while initializing the capture queue. > > This overwrites the valid source default and leaves the capture field at > its zero-initialized value, V4L2_FIELD_ANY. vidioc_streamon() accepts > only V4L2_FIELD_SEQ_TB or V4L2_FIELD_SEQ_BT on the source queue, and > requires the capture queue to use a compatible interlaced or NONE field. > Userspace that relies on the default formats can therefore get -EINVAL > when starting streaming. > > Initialize the capture field instead. The bug is usually hidden because > mem2mem applications commonly call S_FMT on both queues before streaming; > the TRY_FMT paths normalize the fields and S_FMT overwrites q_data[].field. > > Fixes: 8f0755c06b90 ("[media] media: Add mem2mem deinterlacing driver") Missing Cc: [email protected] > Signed-off-by: Xu Rao <[email protected]> > --- > drivers/media/platform/m2m-deinterlace.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/media/platform/m2m-deinterlace.c b/drivers/media/platform/m2m-deinterlace.c > index 1d0e70eaea3d..9dcc4bd6cbdd 100644 > --- a/drivers/media/platform/m2m-deinterlace.c > +++ b/drivers/media/platform/m2m-deinterlace.c > @@ -822,7 +822,7 @@ static int queue_init(void *priv, struct vb2_queue *src_vq, > q_data[V4L2_M2M_DST].width = 640; > q_data[V4L2_M2M_DST].height = 480; > q_data[V4L2_M2M_DST].sizeimage = (640 * 480 * 3) / 2; > - q_data[V4L2_M2M_SRC].field = V4L2_FIELD_INTERLACED_TB; > + q_data[V4L2_M2M_DST].field = V4L2_FIELD_INTERLACED_TB; Looks like a bug indeed. As you said, set_fmt re-initializes the field to V4L2_FIELD_INTERLACED_TB so it should be harmless, but there are no reasons not to fix the initialization. Reviewed-by: Jacopo Mondi <[email protected]> > > return vb2_queue_init(dst_vq); > } > -- > 2.50.1 >