media: mtk-jpegdec: add missing destroy_workqueue()
authorYang Yingliang <yangyingliang@huawei.com>
Thu, 10 Nov 2022 15:05:59 +0000 (15:05 +0000)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 25 Nov 2022 07:37:18 +0000 (07:37 +0000)
destroy_workqueue() needs be called to when driver is
unloading, fix it by using devm_add_action_or_reset()
to make workqueuedevice-managed.

Fixes: dedc21500334 ("media: mtk-jpegdec: add jpeg decode worker interface")
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/platform/mediatek/jpeg/mtk_jpeg_dec_hw.c

index d98f4cdfeea9aad2bb6cf5cda085d0e74ce10b9f..8c07fa02fd9acdd85df91004a90a138869649a86 100644 (file)
@@ -580,6 +580,11 @@ static int mtk_jpegdec_hw_init_irq(struct mtk_jpegdec_comp_dev *dev)
        return 0;
 }
 
+static void mtk_jpegdec_destroy_workqueue(void *data)
+{
+       destroy_workqueue(data);
+}
+
 static int mtk_jpegdec_hw_probe(struct platform_device *pdev)
 {
        struct mtk_jpegdec_clk *jpegdec_clk;
@@ -614,6 +619,11 @@ static int mtk_jpegdec_hw_probe(struct platform_device *pdev)
                                                                | WQ_FREEZABLE);
                if (!master_dev->workqueue)
                        return -EINVAL;
+
+               ret = devm_add_action_or_reset(&pdev->dev, mtk_jpegdec_destroy_workqueue,
+                                              master_dev->workqueue);
+               if (ret)
+                       return ret;
        }
 
        atomic_set(&master_dev->dechw_rdy, MTK_JPEGDEC_HW_MAX);