media: media/pci: use vb2_video_unregister_device()
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Mon, 13 Jul 2020 11:30:44 +0000 (13:30 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Fri, 28 Aug 2020 13:01:54 +0000 (15:01 +0200)
Use vb2_video_unregister_device() to automatically stop streaming
at unregister time.

This avoids the use of vb2_queue_release() which should not be
called by drivers that set vdev->queue.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/pci/dt3155/dt3155.c
drivers/media/pci/intel/ipu3/ipu3-cio2.c
drivers/media/pci/saa7134/saa7134-core.c
drivers/media/pci/saa7134/saa7134-empress.c
drivers/media/pci/saa7134/saa7134-go7007.c
drivers/media/pci/saa7134/saa7134-video.c
drivers/media/pci/sta2x11/sta2x11_vip.c
drivers/media/pci/tw5864/tw5864-video.c

index ef8d5c9cfffe6ef9b527be3fa197c85e5860ebe1..961f844de99c04efc4039d2af7baf83bae1e49ac 100644 (file)
@@ -575,9 +575,8 @@ static void dt3155_remove(struct pci_dev *pdev)
        struct dt3155_priv *pd = container_of(v4l2_dev, struct dt3155_priv,
                                              v4l2_dev);
 
-       video_unregister_device(&pd->vdev);
+       vb2_video_unregister_device(&pd->vdev);
        free_irq(pd->pdev->irq, pd);
-       vb2_queue_release(&pd->vidq);
        v4l2_device_unregister(&pd->v4l2_dev);
        pci_iounmap(pdev, pd->regs);
        pci_release_region(pdev, 0);
index 92f5eadf2c99f323a3ebe6d3134d62fc82f9b420..4e9e34857e4c01b4625931a4b956a50565da465f 100644 (file)
@@ -1633,7 +1633,7 @@ static int cio2_queue_init(struct cio2_device *cio2, struct cio2_queue *q)
        if (r) {
                dev_err(&cio2->pci_dev->dev,
                        "failed to initialize videobuf2 queue (%d)\n", r);
-               goto fail_vbq;
+               goto fail_subdev;
        }
 
        /* Initialize vdev */
@@ -1664,10 +1664,8 @@ static int cio2_queue_init(struct cio2_device *cio2, struct cio2_queue *q)
        return 0;
 
 fail_link:
-       video_unregister_device(&q->vdev);
+       vb2_video_unregister_device(&q->vdev);
 fail_vdev:
-       vb2_queue_release(vbq);
-fail_vbq:
        v4l2_device_unregister_subdev(subdev);
 fail_subdev:
        media_entity_cleanup(&vdev->entity);
@@ -1683,9 +1681,8 @@ fail_fbpt:
 
 static void cio2_queue_exit(struct cio2_device *cio2, struct cio2_queue *q)
 {
-       video_unregister_device(&q->vdev);
+       vb2_video_unregister_device(&q->vdev);
        media_entity_cleanup(&q->vdev.entity);
-       vb2_queue_release(&q->vbq);
        v4l2_device_unregister_subdev(&q->subdev);
        media_entity_cleanup(&q->subdev.entity);
        cio2_fbpt_exit(q, &cio2->pci_dev->dev);
index e4623ed2f831933013816a415a993c6dd2812189..e3ccb464c044f7774a2cdd765bac6c4cda4d1b21 100644 (file)
@@ -965,21 +965,21 @@ static void saa7134_unregister_video(struct saa7134_dev *dev)
 
        if (dev->video_dev) {
                if (video_is_registered(dev->video_dev))
-                       video_unregister_device(dev->video_dev);
+                       vb2_video_unregister_device(dev->video_dev);
                else
                        video_device_release(dev->video_dev);
                dev->video_dev = NULL;
        }
        if (dev->vbi_dev) {
                if (video_is_registered(dev->vbi_dev))
-                       video_unregister_device(dev->vbi_dev);
+                       vb2_video_unregister_device(dev->vbi_dev);
                else
                        video_device_release(dev->vbi_dev);
                dev->vbi_dev = NULL;
        }
        if (dev->radio_dev) {
                if (video_is_registered(dev->radio_dev))
-                       video_unregister_device(dev->radio_dev);
+                       vb2_video_unregister_device(dev->radio_dev);
                else
                        video_device_release(dev->radio_dev);
                dev->radio_dev = NULL;
index 8ad7879bd840d2fe95a2bf7cfd6cb67af48c7d50..39e3c7f8c5b46a00351c8f01838a6fdbb8d03817 100644 (file)
@@ -314,8 +314,7 @@ static int empress_fini(struct saa7134_dev *dev)
        if (NULL == dev->empress_dev)
                return 0;
        flush_work(&dev->empress_workqueue);
-       video_unregister_device(dev->empress_dev);
-       vb2_queue_release(&dev->empress_vbq);
+       vb2_video_unregister_device(dev->empress_dev);
        v4l2_ctrl_handler_free(&dev->empress_ctrl_handler);
        dev->empress_dev = NULL;
        return 0;
index e1b0346639586d3461ac99e522ebbe80bd65c005..f319edb39c0ef0e4969e83f06b21ca4042fb5470 100644 (file)
@@ -493,7 +493,7 @@ static int saa7134_go7007_fini(struct saa7134_dev *dev)
        free_page((unsigned long)saa->bottom);
        v4l2_device_unregister_subdev(&saa->sd);
        kfree(saa);
-       video_unregister_device(&go->vdev);
+       vb2_video_unregister_device(&go->vdev);
 
        v4l2_device_put(&go->v4l2_dev);
        dev->empress_dev = NULL;
index a8ac94fadc1414f22becf13d86916f898705f6b1..9a6a6b68f8e3e179c3bd0fcc6dcf883aa3ac1924 100644 (file)
@@ -2154,9 +2154,7 @@ int saa7134_video_init1(struct saa7134_dev *dev)
 void saa7134_video_fini(struct saa7134_dev *dev)
 {
        /* free stuff */
-       vb2_queue_release(&dev->video_vbq);
        saa7134_pgtable_free(dev->pci, &dev->video_q.pt);
-       vb2_queue_release(&dev->vbi_vbq);
        saa7134_pgtable_free(dev->pci, &dev->vbi_q.pt);
        v4l2_ctrl_handler_free(&dev->ctrl_handler);
        if (card_has_radio(dev))
index 0fdb0fd6e764676b30de71bf6fa12c86166329e0..336df65c8af1168dab46661f3937768e60e151a5 100644 (file)
@@ -1101,12 +1101,11 @@ static int sta2x11_vip_init_one(struct pci_dev *pdev,
 vunreg:
        video_set_drvdata(&vip->video_dev, NULL);
 vrelease:
-       video_unregister_device(&vip->video_dev);
+       vb2_video_unregister_device(&vip->video_dev);
        free_irq(pdev->irq, vip);
 release_buf:
        pci_disable_msi(pdev);
 unmap:
-       vb2_queue_release(&vip->vb_vidq);
        pci_iounmap(pdev, vip->iomem);
 release:
        pci_release_regions(pdev);
@@ -1146,10 +1145,9 @@ static void sta2x11_vip_remove_one(struct pci_dev *pdev)
        sta2x11_vip_clear_register(vip);
 
        video_set_drvdata(&vip->video_dev, NULL);
-       video_unregister_device(&vip->video_dev);
+       vb2_video_unregister_device(&vip->video_dev);
        free_irq(pdev->irq, vip);
        pci_disable_msi(pdev);
-       vb2_queue_release(&vip->vb_vidq);
        pci_iounmap(pdev, vip->iomem);
        pci_release_regions(pdev);
 
index ec1e06da7e4fb0a2cb66825fc1529217c2343495..943f692024af79e0b97095fdc41f2e370fe0e081 100644 (file)
@@ -1178,7 +1178,6 @@ static int tw5864_video_input_init(struct tw5864_input *input, int video_nr)
 
 free_v4l2_hdl:
        v4l2_ctrl_handler_free(hdl);
-       vb2_queue_release(&input->vidq);
 free_mutex:
        mutex_destroy(&input->lock);
 
@@ -1187,9 +1186,8 @@ free_mutex:
 
 static void tw5864_video_input_fini(struct tw5864_input *dev)
 {
-       video_unregister_device(&dev->vdev);
+       vb2_video_unregister_device(&dev->vdev);
        v4l2_ctrl_handler_free(&dev->hdl);
-       vb2_queue_release(&dev->vidq);
 }
 
 void tw5864_video_fini(struct tw5864_dev *dev)