summaryrefslogtreecommitdiffstats
path: root/drivers/media/media-entity.c
diff options
context:
space:
mode:
authorZhipeng Lu <alexious@zju.edu.cn>2024-02-03 14:40:43 +0100
committerSasha Levin <sashal@kernel.org>2024-03-26 18:22:38 -0400
commitd0f5c28333822f9baa5280d813124920720fd856 (patch)
tree4eb8adc93fce61cd0bedccd548317e2f75182081 /drivers/media/media-entity.c
parentdc04ff778b4f8ff4560f1c42993417359e74d36a (diff)
downloadlinux-stable-d0f5c28333822f9baa5280d813124920720fd856.tar.gz
linux-stable-d0f5c28333822f9baa5280d813124920720fd856.tar.bz2
linux-stable-d0f5c28333822f9baa5280d813124920720fd856.zip
media: edia: dvbdev: fix a use-after-free
[ Upstream commit 8c64f4cdf4e6cc5682c52523713af8c39c94e6d5 ] In dvb_register_device, *pdvbdev is set equal to dvbdev, which is freed in several error-handling paths. However, *pdvbdev is not set to NULL after dvbdev's deallocation, causing use-after-frees in many places, for example, in the following call chain: budget_register |-> dvb_dmxdev_init |-> dvb_register_device |-> dvb_dmxdev_release |-> dvb_unregister_device |-> dvb_remove_device |-> dvb_device_put |-> kref_put When calling dvb_unregister_device, dmxdev->dvbdev (i.e. *pdvbdev in dvb_register_device) could point to memory that had been freed in dvb_register_device. Thereafter, this pointer is transferred to kref_put and triggering a use-after-free. Link: https://lore.kernel.org/linux-media/20240203134046.3120099-1-alexious@zju.edu.cn Fixes: b61901024776 ("V4L/DVB (5244): Dvbdev: fix illegal re-usage of fileoperations struct") Signed-off-by: Zhipeng Lu <alexious@zju.edu.cn> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/media/media-entity.c')
0 files changed, 0 insertions, 0 deletions