linux_dsm_epyc7002/drivers/media
Alan Stern 9e08117c9d media: usbvision: Fix races among open, close, and disconnect
Visual inspection of the usbvision driver shows that it suffers from
three races between its open, close, and disconnect handlers.  In
particular, the driver is careful to update its usbvision->user and
usbvision->remove_pending flags while holding the private mutex, but:

	usbvision_v4l2_close() and usbvision_radio_close() don't hold
	the mutex while they check the value of
	usbvision->remove_pending;

	usbvision_disconnect() doesn't hold the mutex while checking
	the value of usbvision->user; and

	also, usbvision_v4l2_open() and usbvision_radio_open() don't
	check whether the device has been unplugged before allowing
	the user to open the device files.

Each of these can potentially lead to usbvision_release() being called
twice and use-after-free errors.

This patch fixes the races by reading the flags while the mutex is
still held and checking for pending removes before allowing an open to
succeed.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: <stable@vger.kernel.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
2019-10-10 07:22:38 -03:00
..
cec media: cec: expose the new connector info API 2019-10-01 17:19:41 -03:00
common media: v4l2-tpg: add support for new pixelformats 2019-07-30 12:16:45 -04:00
dvb-core media: dvb-core: fix a memory leak bug 2019-08-21 18:39:54 -03:00
dvb-frontends media: si2168: use bits instead of bool for flags 2019-10-10 07:05:51 -03:00
firewire media: firewire: Make structure fdtv_ca constant 2019-08-21 18:39:55 -03:00
i2c media: i2c: Use div64_ul() for u64-by-unsigned-long divide 2019-10-10 07:15:57 -03:00
mc media: mc-device.c: fix memleak in media_device_register_entity 2019-10-01 12:26:35 -03:00
mmc treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
pci media: cx18: make array mapping static, makes object smaller 2019-10-10 07:21:28 -03:00
platform media: v4l: cadence: Fix how unsued lanes are handled in 'csi2rx_start()' 2019-10-10 07:19:13 -03:00
radio media: don't do a 31 bit shift on a signed int 2019-08-26 14:11:10 -03:00
rc media: rc: Use devm_platform_ioremap_resource() in tango_ir_probe() 2019-10-07 07:44:56 -03:00
spi media: Clarify how menus are hidden by SUBDRV_AUTOSELECT 2019-08-19 12:00:29 -03:00
tuners media: si2157: Add option for not downloading firmware. 2019-10-10 07:07:14 -03:00
usb media: usbvision: Fix races among open, close, and disconnect 2019-10-10 07:22:38 -03:00
v4l2-core media: v4l: fwnode: Make v4l2_fwnode_endpoint_free() safer 2019-10-01 17:32:55 -03:00
Kconfig media: Clarify how menus are hidden by SUBDRV_AUTOSELECT 2019-08-19 12:00:29 -03:00
Makefile media: move drivers/media/media-* to drivers/media/mc/mc-* 2019-05-28 12:15:46 -04:00