aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/hdpvr/hdpvr-video.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/hdpvr/hdpvr-video.c')
-rw-r--r--drivers/media/video/hdpvr/hdpvr-video.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/media/video/hdpvr/hdpvr-video.c b/drivers/media/video/hdpvr/hdpvr-video.c
index 196f82de48f0..d2f0ee29737f 100644
--- a/drivers/media/video/hdpvr/hdpvr-video.c
+++ b/drivers/media/video/hdpvr/hdpvr-video.c
@@ -1214,6 +1214,24 @@ static void hdpvr_device_release(struct video_device *vdev)
1214 struct hdpvr_device *dev = video_get_drvdata(vdev); 1214 struct hdpvr_device *dev = video_get_drvdata(vdev);
1215 1215
1216 hdpvr_delete(dev); 1216 hdpvr_delete(dev);
1217 mutex_lock(&dev->io_mutex);
1218 destroy_workqueue(dev->workqueue);
1219 mutex_unlock(&dev->io_mutex);
1220
1221 v4l2_device_unregister(&dev->v4l2_dev);
1222
1223 /* deregister I2C adapter */
1224#ifdef CONFIG_I2C
1225 mutex_lock(&dev->i2c_mutex);
1226 if (dev->i2c_adapter)
1227 i2c_del_adapter(dev->i2c_adapter);
1228 kfree(dev->i2c_adapter);
1229 dev->i2c_adapter = NULL;
1230 mutex_unlock(&dev->i2c_mutex);
1231#endif /* CONFIG_I2C */
1232
1233 kfree(dev->usbc_buf);
1234 kfree(dev);
1217} 1235}
1218 1236
1219static const struct video_device hdpvr_video_template = { 1237static const struct video_device hdpvr_video_template = {