]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: amphion: Cancel message work before releasing the VPU core
authorMing Qian <ming.qian@oss.nxp.com>
Tue, 16 Sep 2025 06:10:07 +0000 (14:10 +0800)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Mon, 20 Oct 2025 07:23:17 +0000 (09:23 +0200)
To avoid accessing the VPU register after release of the VPU core,
cancel the message work and destroy the workqueue that handles the
VPU message before release of the VPU core.

Fixes: 3cd084519c6f ("media: amphion: add vpu v4l2 m2m support")
Cc: stable@vger.kernel.org
Signed-off-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>
drivers/media/platform/amphion/vpu_v4l2.c

index 511881a131b708e4f15f65f6be1a45243db830bc..47dff9a35bb46d886876612d28cef7e057687d78 100644 (file)
@@ -703,15 +703,15 @@ static int vpu_v4l2_release(struct vpu_inst *inst)
 {
        vpu_trace(inst->vpu->dev, "%p\n", inst);
 
-       vpu_release_core(inst->core);
-       put_device(inst->dev);
-
        if (inst->workqueue) {
                cancel_work_sync(&inst->msg_work);
                destroy_workqueue(inst->workqueue);
                inst->workqueue = NULL;
        }
 
+       vpu_release_core(inst->core);
+       put_device(inst->dev);
+
        v4l2_ctrl_handler_free(&inst->ctrl_handler);
        mutex_destroy(&inst->lock);