au0828_analog_register() doesn't release video and vbi queues created by vb2_queue_init(). In addition, it doesn't unregister vdev when vbi register fails. Add vb2_queue_release() calls to release video and vbi queues to the failure path to be called when vdev register fails. Add video_unregister_device() for vdev when vbi register fails. Signed-off-by: Shuah Khan <shuahkh@xxxxxxxxxxxxxxx> --- Please note that this patch is dependent on the au0828 vb2 conversion patch. drivers/media/usb/au0828/au0828-video.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/media/usb/au0828/au0828-video.c b/drivers/media/usb/au0828/au0828-video.c index 94b65b8..17450eb 100644 --- a/drivers/media/usb/au0828/au0828-video.c +++ b/drivers/media/usb/au0828/au0828-video.c @@ -1785,7 +1785,7 @@ int au0828_analog_register(struct au0828_dev *dev, dprintk(1, "unable to register video device (error = %d).\n", retval); ret = -ENODEV; - goto err_vbi_dev; + goto err_reg_vdev; } /* Register the vbi device */ @@ -1795,14 +1795,18 @@ int au0828_analog_register(struct au0828_dev *dev, dprintk(1, "unable to register vbi device (error = %d).\n", retval); ret = -ENODEV; - goto err_vbi_dev; + goto err_reg_vbi_dev; } - dprintk(1, "%s completed!\n", __func__); return 0; +err_reg_vbi_dev: + video_unregister_device(dev->vdev); +err_reg_vdev: + vb2_queue_release(&dev->vb_vidq); + vb2_queue_release(&dev->vb_vbiq); err_vbi_dev: video_device_release(dev->vbi_dev); err_vdev: -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html