linux/drivers/media/pci/cx23885
Fan Wu 4e143d662c media: cx23885: cancel NetUP CI work before teardown
netup_ci_exit() frees a netup_ci_state while its work item,
netup_read_ci_status(), may still be pending or running on the system
workqueue. The worker obtains the state with container_of() and
dereferences it, so it must not outlive the state.

netup_ci_init() queues the initial status read, and CI GPIO interrupts
subsequently queue the same work from netup_ci_slot_status(). During
remove, cx23885_finidev() calls free_irq() before the CI device is
unregistered. free_irq() prevents further IRQ handlers from running,
but does not drain work queued previously, so the worker can run after
netup_ci_exit() frees the state.

Call cancel_work_sync() before dvb_ca_en50221_release() and kfree().

This issue was found by an in-house static analysis tool.

Fixes: c184dcd282 ("V4L/DVB (10798): Add CIMax(R) SP2 Common Interface code for NetUP Dual DVB-S2 CI card")
Cc: stable@vger.kernel.org
Assisted-by: Codex:gpt-5.6
Signed-off-by: Fan Wu <fanwu01@zju.edu.cn>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
2026-07-28 15:17:54 +02:00
..
altera-ci.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
altera-ci.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
cimax2.c media: cx23885: cancel NetUP CI work before teardown 2026-07-28 15:17:54 +02:00
cimax2.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
cx23885-417.c media: pci: drop vb2_ops_wait_prepare/finish 2024-10-28 09:19:53 +01:00
cx23885-alsa.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
cx23885-av.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
cx23885-av.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
cx23885-cards.c media: cx23885: Module option to disable analog video 2026-03-25 18:27:25 +01:00
cx23885-core.c media: pci: Use PCI_DEVICE macros and drop zeros from pci_device_id arrays 2026-07-15 17:12:54 +02:00
cx23885-dvb.c media: cx23885: Module option to disable analog video 2026-03-25 18:27:25 +01:00
cx23885-f300.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
cx23885-f300.h
cx23885-i2c.c media: pci: cx23885: convert to i2c_new_scanned_device 2020-01-08 14:29:46 +01:00
cx23885-input.c media: rc: fix race between unregister and urb/irq callbacks 2026-03-17 14:43:56 +01:00
cx23885-input.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
cx23885-ioctl.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
cx23885-ioctl.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
cx23885-ir.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
cx23885-ir.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
cx23885-reg.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
cx23885-vbi.c media: pci: drop vb2_ops_wait_prepare/finish 2024-10-28 09:19:53 +01:00
cx23885-video.c media: cx23885: Add analog support for AVerMedia H789-C PCIe card 2025-03-04 15:56:11 +01:00
cx23885-video.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
cx23885.h media: cx23885: Module option to disable analog video 2026-03-25 18:27:25 +01:00
cx23888-ir.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
cx23888-ir.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
Kconfig Revert "media: Kconfig: better support hybrid TV devices" 2020-04-14 11:00:30 +02:00
Makefile media: prefix header search paths with $(srctree)/ 2019-05-18 11:49:56 +09:00
netup-eeprom.c media: cx23885: Remove unused netup_eeprom_write 2025-02-25 09:14:05 +01:00
netup-eeprom.h media: cx23885: Remove unused netup_eeprom_write 2025-02-25 09:14:05 +01:00
netup-init.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
netup-init.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00