linux/drivers/media/usb
Ricardo Ribalda 438bda062b media: uvcvideo: Remove dangling pointers
commit 221cd51efe upstream.

When an async control is written, we copy a pointer to the file handle
that started the operation. That pointer will be used when the device is
done. Which could be anytime in the future.

If the user closes that file descriptor, its structure will be freed,
and there will be one dangling pointer per pending async control, that
the driver will try to use.

Clean all the dangling pointers during release().

To avoid adding a performance penalty in the most common case (no async
operation), a counter has been introduced with some logic to make sure
that it is properly handled.

Cc: stable@vger.kernel.org
Fixes: e5225c820c ("media: uvcvideo: Send a control event when a Control Change interrupt arrives")
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Link: https://lore.kernel.org/r/20241203-uvc-fix-async-v6-3-26c867231118@chromium.org
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-02-17 10:05:36 +01:00
..
airspy media: usb: airspy: Stop direct calls to queue num_buffers field 2023-11-23 12:35:58 +01:00
as102 media: as102: avoid GFP_ATOMIC 2024-04-29 12:07:00 +01:00
au0828 media: au0828: Use umin macro 2024-05-03 11:13:02 +01:00
b2c2 media: b2c2: flexcop-usb: fix flexcop_usb_memory_req 2024-06-24 11:05:07 +02:00
cx231xx media: cx231xx: Add support for Dexatek USB Video Grabber 1d19:6108 2024-12-14 20:03:40 +01:00
dvb-usb move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
dvb-usb-v2 media: dvb-usb-v2: af9035: fix ISO C90 compilation error on af9035_i2c_master_xfer 2025-02-08 09:57:54 +01:00
em28xx media: em28xx: Set GPIOs for non-audio boards when switching input 2024-06-29 12:20:05 +02:00
go7007 media: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-08-09 07:56:37 +02:00
gspca media: gspca: ov534-ov772x: Fix off-by-one error in set_frame_rate() 2024-12-09 10:41:00 +01:00
hackrf media: usb: hackrf: Stop direct calls to queue num_buffers field 2023-11-23 12:36:42 +01:00
hdpvr media: hdpvr: fix error value returns in hdpvr_read 2022-06-27 09:02:50 +01:00
msi2500 media: usb/msi2500: Follow renaming of SPI "master" to "controller" 2024-02-08 11:54:41 +00:00
pvrusb2 media: pvrusb2: remove unused struct 'debugifc_mask_item' 2024-05-31 13:51:16 +02:00
pwc media: usb: pwc-uncompress: Use flex array destination for memcpy() 2022-12-07 17:58:46 +01:00
s2255 media: s2255: Use refcount_t instead of atomic_t for num_channels 2024-05-03 11:10:58 +01:00
siano media: usb: siano: Fix allocation of urbs 2024-04-16 00:02:53 +02:00
stk1160 media: stk1160: Use min macro 2024-05-03 11:14:15 +01:00
ttusb-budget media: dvb-ttusb-budget: cleanup printk logic 2020-09-03 11:15:47 +02:00
ttusb-dec media: Convert from tasklet to BH workqueue 2024-06-21 08:57:09 +02:00
usbtv media: usbtv: Remove useless locks in usbtv_video_free() 2024-03-04 12:58:38 +01:00
uvc media: uvcvideo: Remove dangling pointers 2025-02-17 10:05:36 +01:00
Kconfig media: tm6000: deprecate this driver 2022-08-29 16:43:00 +02:00
Makefile media: tm6000: deprecate this driver 2022-08-29 16:43:00 +02:00