mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
media: amphion: prevent unbind while video instances are open
An open video instance holds a plain pointer to its devm-allocated core.
Unbinding the core or its parent through sysfs can release that memory
while the instance remains open. A later ioctl or close then uses the
stale pointer.
The video file operations pin the module, but sysfs unbind bypasses that
protection. Suppress manual bind and unbind for both platform drivers,
and warn if core removal ever encounters a live instance.
Fixes: 9f599f351e ("media: amphion: add vpu core driver")
Cc: stable@vger.kernel.org
Co-developed-by: Ijae Kim <ae878000@gmail.com>
Signed-off-by: Ijae Kim <ae878000@gmail.com>
Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
Reviewed-by: Ming Qian <ming.qian@oss.nxp.com>
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
This commit is contained in:
parent
ec95ae226f
commit
96ea6bc683
|
|
@ -696,6 +696,8 @@ static void vpu_core_remove(struct platform_device *pdev)
|
|||
struct vpu_core *core = platform_get_drvdata(pdev);
|
||||
int ret;
|
||||
|
||||
WARN_ON(!list_empty(&core->instances));
|
||||
|
||||
vpu_core_remove_dbgfs_file(core);
|
||||
ret = pm_runtime_resume_and_get(dev);
|
||||
WARN_ON(ret < 0);
|
||||
|
|
@ -846,6 +848,7 @@ static struct platform_driver amphion_vpu_core_driver = {
|
|||
.remove = vpu_core_remove,
|
||||
.driver = {
|
||||
.name = "amphion-vpu-core",
|
||||
.suppress_bind_attrs = true,
|
||||
.of_match_table = vpu_core_dt_match,
|
||||
.pm = &vpu_core_pm_ops,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -205,6 +205,7 @@ static struct platform_driver amphion_vpu_driver = {
|
|||
.remove = vpu_remove,
|
||||
.driver = {
|
||||
.name = "amphion-vpu",
|
||||
.suppress_bind_attrs = true,
|
||||
.of_match_table = vpu_dt_match,
|
||||
},
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user