| From fe72e300105f589304872d8bf005c8a66deb7f88 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 14 Jun 2021 12:34:05 +0200 |
| Subject: media: subdev: remove VIDIOC_DQEVENT_TIME32 handling |
| |
| From: Arnd Bergmann <arnd@arndb.de> |
| |
| [ Upstream commit 765ba251d2522e2a0daa2f0793fd0f0ce34816ec ] |
| |
| 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 if CONFIG_COMPAT_32BIT_TIME is set, but since it is dead |
| code, it should just get removed. |
| |
| On a 64-bit architecture, as well as a 32-bit architecture without |
| CONFIG_COMPAT_32BIT_TIME, handling this command is a mistake, |
| and the kernel should return an error. |
| |
| Fixes: 1a6c0b36dd19 ("media: v4l2-core: fix VIDIOC_DQEVENT for time64 ABI") |
| Signed-off-by: Arnd Bergmann <arnd@arndb.de> |
| Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> |
| Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| 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 a7d508e74d6b..fbf0dcb313c8 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); |
| |
| -- |
| 2.30.2 |
| |