Re: [PATCH v3 4/8] media: subdev: remove VIDIOC_DQEVENT_TIME32 handling

From: Laurent Pinchart
Date: Mon Jun 14 2021 - 13:02:40 EST


Hi Arnd,

Thank you for the patch.

On Mon, Jun 14, 2021 at 12:34:05PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@xxxxxxxx>
>
> Converting the VIDIOC_DQEVENT_TIME32/VIDIOC_DQEVENT32/
> VIDIOC_DQEVENT32_TIME32 arguments to the canonical form is done in common
> code, but for some reason I ended up adding another conversion helper to
> subdev_do_ioctl() as well. I must have concluded that this does not go
> through the common conversion, but it has done that since the ioctl
> handler was first added.
>
> I assume this one is harmless as there should be no way to arrive here
> from user space, but since it is dead code, it should just get removed.

If I'm not mistaken, this could be reached when
!CONFIG_COMPAT_32BIT_TIME, can't it ? Still, there's no need for this
code in that case, so it seems fine to me.

> Fixes: 1a6c0b36dd19 ("media: v4l2-core: fix VIDIOC_DQEVENT for time64 ABI")
> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>

With an updated commit message if the above is correct,

Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>

> ---
> drivers/media/v4l2-core/v4l2-subdev.c | 24 ------------------------
> 1 file changed, 24 deletions(-)
>
> diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c
> index 956dafab43d4..bf3aa9252458 100644
> --- a/drivers/media/v4l2-core/v4l2-subdev.c
> +++ b/drivers/media/v4l2-core/v4l2-subdev.c
> @@ -428,30 +428,6 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg)
>
> return v4l2_event_dequeue(vfh, arg, file->f_flags & O_NONBLOCK);
>
> - case VIDIOC_DQEVENT_TIME32: {
> - struct v4l2_event_time32 *ev32 = arg;
> - struct v4l2_event ev = { };
> -
> - if (!(sd->flags & V4L2_SUBDEV_FL_HAS_EVENTS))
> - return -ENOIOCTLCMD;
> -
> - rval = v4l2_event_dequeue(vfh, &ev, file->f_flags & O_NONBLOCK);
> -
> - *ev32 = (struct v4l2_event_time32) {
> - .type = ev.type,
> - .pending = ev.pending,
> - .sequence = ev.sequence,
> - .timestamp.tv_sec = ev.timestamp.tv_sec,
> - .timestamp.tv_nsec = ev.timestamp.tv_nsec,
> - .id = ev.id,
> - };
> -
> - memcpy(&ev32->u, &ev.u, sizeof(ev.u));
> - memcpy(&ev32->reserved, &ev.reserved, sizeof(ev.reserved));
> -
> - return rval;
> - }
> -
> case VIDIOC_SUBSCRIBE_EVENT:
> return v4l2_subdev_call(sd, core, subscribe_event, vfh, arg);
>

--
Regards,

Laurent Pinchart