OSDN Git Service

media: rcar-vin: unregister video device on driver removal
authorNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Sat, 14 Apr 2018 11:56:58 +0000 (07:56 -0400)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Fri, 20 Apr 2018 13:32:43 +0000 (09:32 -0400)
If the video device was registered by the complete() callback it should
be unregistered when a device is unbound from the driver. Protect from
printing an uninitialized video device node name by adding a check in
rvin_v4l2_unregister() to identify that the video device is registered.

Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/platform/rcar-vin/rcar-core.c
drivers/media/platform/rcar-vin/rcar-v4l2.c

index 2bedf20..47f06ac 100644 (file)
@@ -272,6 +272,8 @@ static int rcar_vin_remove(struct platform_device *pdev)
 
        pm_runtime_disable(&pdev->dev);
 
+       rvin_v4l2_unregister(vin);
+
        v4l2_async_notifier_unregister(&vin->notifier);
        v4l2_async_notifier_cleanup(&vin->notifier);
 
index cab38e7..953e48e 100644 (file)
@@ -841,6 +841,9 @@ static const struct v4l2_file_operations rvin_fops = {
 
 void rvin_v4l2_unregister(struct rvin_dev *vin)
 {
+       if (!video_is_registered(&vin->vdev))
+               return;
+
        v4l2_info(&vin->v4l2_dev, "Removing %s\n",
                  video_device_node_name(&vin->vdev));