lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250528-uvc-grannular-invert-v1-8-d01581f9cc25@chromium.org>
Date: Wed, 28 May 2025 17:58:03 +0000
From: Ricardo Ribalda <ribalda@...omium.org>
To: Laurent Pinchart <laurent.pinchart@...asonboard.com>, 
 Hans de Goede <hdegoede@...hat.com>, 
 Mauro Carvalho Chehab <mchehab@...nel.org>, 
 Hans Verkuil <hverkuil@...all.nl>
Cc: linux-media@...r.kernel.org, linux-kernel@...r.kernel.org, 
 Ricardo Ribalda <ribalda@...omium.org>
Subject: [PATCH 8/9] media: uvcvideo: Do not turn on the camera unless is
 needed

There are a lot of IOCTLs that do not need to turn on the camera. Eg:
- They only operate to internal data, like UVCIOC_CTRL_MAP.
- They are not applicable to the uvc driver, like VIDIOC_G_AUDIO.
- They are handled by the uvc framework, like VIDIOC_STREAMON.

Remove them from the turn-on list.

Signed-off-by: Ricardo Ribalda <ribalda@...omium.org>
---
 drivers/media/usb/uvc/uvc_v4l2.c | 57 ----------------------------------------
 1 file changed, 57 deletions(-)

diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c
index e7373a2ae3c37ca02f9076773154901a603820ac..fcb1b79c214849ce4da96a86a688d777b32cc688 100644
--- a/drivers/media/usb/uvc/uvc_v4l2.c
+++ b/drivers/media/usb/uvc/uvc_v4l2.c
@@ -1291,75 +1291,18 @@ static long uvc_v4l2_unlocked_ioctl(struct file *file,
 
 	/* The following IOCTLs do need to turn on the camera. */
 	switch (cmd) {
-	case UVCIOC_CTRL_MAP:
 	case UVCIOC_CTRL_QUERY:
-	case VIDIOC_CROPCAP:
-	case VIDIOC_DBG_G_CHIP_INFO:
-	case VIDIOC_DBG_G_REGISTER:
-	case VIDIOC_DBG_S_REGISTER:
-	case VIDIOC_DECODER_CMD:
-	case VIDIOC_DQEVENT:
-	case VIDIOC_DV_TIMINGS_CAP:
-	case VIDIOC_ENCODER_CMD:
-	case VIDIOC_ENUMAUDIO:
-	case VIDIOC_ENUMAUDOUT:
-	case VIDIOC_ENUMOUTPUT:
-	case VIDIOC_ENUMSTD:
-	case VIDIOC_ENUM_DV_TIMINGS:
-	case VIDIOC_ENUM_FREQ_BANDS:
-	case VIDIOC_G_AUDIO:
-	case VIDIOC_G_AUDOUT:
-	case VIDIOC_G_CROP:
 	case VIDIOC_G_CTRL:
-	case VIDIOC_G_DV_TIMINGS:
-	case VIDIOC_G_EDID:
-	case VIDIOC_G_ENC_INDEX:
 	case VIDIOC_G_EXT_CTRLS:
-	case VIDIOC_G_FBUF:
-	case VIDIOC_G_FREQUENCY:
 	case VIDIOC_G_INPUT:
-	case VIDIOC_G_JPEGCOMP:
-	case VIDIOC_G_MODULATOR:
-	case VIDIOC_G_OUTPUT:
-	case VIDIOC_G_PRIORITY:
-	case VIDIOC_G_SLICED_VBI_CAP:
-	case VIDIOC_G_STD:
-	case VIDIOC_G_TUNER:
-	case VIDIOC_LOG_STATUS:
-	case VIDIOC_OVERLAY:
-	case VIDIOC_PREPARE_BUF:
-	case VIDIOC_QUERYBUF:
-	case VIDIOC_QUERYCAP:
 	case VIDIOC_QUERYCTRL:
 	case VIDIOC_QUERYMENU:
-	case VIDIOC_QUERYSTD:
-	case VIDIOC_QUERY_DV_TIMINGS:
 	case VIDIOC_QUERY_EXT_CTRL:
-	case VIDIOC_REMOVE_BUFS:
-	case VIDIOC_STREAMOFF:
-	case VIDIOC_STREAMON:
-	case VIDIOC_S_AUDIO:
-	case VIDIOC_S_AUDOUT:
-	case VIDIOC_S_CROP:
 	case VIDIOC_S_CTRL:
-	case VIDIOC_S_DV_TIMINGS:
-	case VIDIOC_S_EDID:
 	case VIDIOC_S_EXT_CTRLS:
-	case VIDIOC_S_FBUF:
 	case VIDIOC_S_FMT:
-	case VIDIOC_S_FREQUENCY:
-	case VIDIOC_S_HW_FREQ_SEEK:
 	case VIDIOC_S_INPUT:
-	case VIDIOC_S_JPEGCOMP:
-	case VIDIOC_S_MODULATOR:
-	case VIDIOC_S_OUTPUT:
 	case VIDIOC_S_PARM:
-	case VIDIOC_S_PRIORITY:
-	case VIDIOC_S_SELECTION:
-	case VIDIOC_S_STD:
-	case VIDIOC_S_TUNER:
-	case VIDIOC_TRY_DECODER_CMD:
-	case VIDIOC_TRY_ENCODER_CMD:
 	case VIDIOC_TRY_EXT_CTRLS:
 	case VIDIOC_TRY_FMT:
 		return uvc_v4l2_pm_ioctl(file, cmd, arg);

-- 
2.49.0.1266.g31b7d2e469-goog


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ