]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Jan 2026 09:14:46 +0000 (10:14 +0100)
commit ae246b0032146e352c4c06a7bf03cd3d5bcb2ecd upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/platform/amphion/vpu_v4l2.c

index 7f66bfef2abbecc4c5737a06f9efcc723dc1b515..23a9eee07cf7567e118a8c2e17e9542a05f48660 100644 (file)
@@ -698,15 +698,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);