media: ipu3-cio2: Unregister device nodes first, then release resources
authorSakari Ailus <sakari.ailus@linux.intel.com>
Wed, 10 Oct 2018 08:01:05 +0000 (04:01 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Tue, 6 Nov 2018 12:11:36 +0000 (07:11 -0500)
While there are issues related to object lifetime management, unregister
the media device first, followed immediately by other device nodes when
the driver is being unbound. Only then the resources needed by the driver
may be released. This is slightly safer.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Tested-by: Bingbu Cao <bingbu.cao@intel.com>
Reviewed-by: Bingbu Cao <bingbu.cao@intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/pci/intel/ipu3/ipu3-cio2.c

index 452eb9b42140bb927e7af8287dcbe99b45ef51dd..723022ef366291fd5767db06c0bfac11e66fa0c3 100644 (file)
@@ -1846,12 +1846,12 @@ static void cio2_pci_remove(struct pci_dev *pci_dev)
        struct cio2_device *cio2 = pci_get_drvdata(pci_dev);
        unsigned int i;
 
+       media_device_unregister(&cio2->media_dev);
        cio2_notifier_exit(cio2);
-       cio2_fbpt_exit_dummy(cio2);
        for (i = 0; i < CIO2_QUEUES; i++)
                cio2_queue_exit(cio2, &cio2->queue[i]);
+       cio2_fbpt_exit_dummy(cio2);
        v4l2_device_unregister(&cio2->v4l2_dev);
-       media_device_unregister(&cio2->media_dev);
        media_device_cleanup(&cio2->media_dev);
        mutex_destroy(&cio2->lock);
 }