diff options
Diffstat (limited to 'drivers/media/v4l2-core/v4l2-dev.c')
| -rw-r--r-- | drivers/media/v4l2-core/v4l2-dev.c | 14 | 
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c index b40c08ce909d..c369235113d9 100644 --- a/drivers/media/v4l2-core/v4l2-dev.c +++ b/drivers/media/v4l2-core/v4l2-dev.c @@ -1054,25 +1054,25 @@ int __video_register_device(struct video_device *vdev,  	vdev->dev.class = &video_class;  	vdev->dev.devt = MKDEV(VIDEO_MAJOR, vdev->minor);  	vdev->dev.parent = vdev->dev_parent; +	vdev->dev.release = v4l2_device_release;  	dev_set_name(&vdev->dev, "%s%d", name_base, vdev->num); + +	/* Increase v4l2_device refcount */ +	v4l2_device_get(vdev->v4l2_dev); +  	mutex_lock(&videodev_lock);  	ret = device_register(&vdev->dev);  	if (ret < 0) {  		mutex_unlock(&videodev_lock);  		pr_err("%s: device_register failed\n", __func__); -		goto cleanup; +		put_device(&vdev->dev); +		return ret;  	} -	/* Register the release callback that will be called when the last -	   reference to the device goes away. */ -	vdev->dev.release = v4l2_device_release;  	if (nr != -1 && nr != vdev->num && warn_if_nr_in_use)  		pr_warn("%s: requested %s%d, got %s\n", __func__,  			name_base, nr, video_device_node_name(vdev)); -	/* Increase v4l2_device refcount */ -	v4l2_device_get(vdev->v4l2_dev); -  	/* Part 5: Register the entity. */  	ret = video_register_media_controller(vdev);  | 
