Commit 5332bdbe authored by Oliver Neukum's avatar Oliver Neukum Committed by Mauro Carvalho Chehab

V4L/DVB (5399): Usbvideo module handling

Signed-off-by: default avatarOliver Neukum <oneukum@suse.de>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 5cdc178d
...@@ -628,24 +628,21 @@ EXPORT_SYMBOL(usbvideo_HexDump); ...@@ -628,24 +628,21 @@ EXPORT_SYMBOL(usbvideo_HexDump);
/* ******************************************************************** */ /* ******************************************************************** */
/* XXX: this piece of crap really wants some error handling.. */ /* XXX: this piece of crap really wants some error handling.. */
static void usbvideo_ClientIncModCount(struct uvd *uvd) static int usbvideo_ClientIncModCount(struct uvd *uvd)
{ {
if (uvd == NULL) { if (uvd == NULL) {
err("%s: uvd == NULL", __FUNCTION__); err("%s: uvd == NULL", __FUNCTION__);
return; return -EINVAL;
} }
if (uvd->handle == NULL) { if (uvd->handle == NULL) {
err("%s: uvd->handle == NULL", __FUNCTION__); err("%s: uvd->handle == NULL", __FUNCTION__);
return; return -EINVAL;
}
if (uvd->handle->md_module == NULL) {
err("%s: uvd->handle->md_module == NULL", __FUNCTION__);
return;
} }
if (!try_module_get(uvd->handle->md_module)) { if (!try_module_get(uvd->handle->md_module)) {
err("%s: try_module_get() == 0", __FUNCTION__); err("%s: try_module_get() == 0", __FUNCTION__);
return; return -ENODEV;
} }
return 0;
} }
static void usbvideo_ClientDecModCount(struct uvd *uvd) static void usbvideo_ClientDecModCount(struct uvd *uvd)
...@@ -712,8 +709,6 @@ int usbvideo_register( ...@@ -712,8 +709,6 @@ int usbvideo_register(
cams->num_cameras = num_cams; cams->num_cameras = num_cams;
cams->cam = (struct uvd *) &cams[1]; cams->cam = (struct uvd *) &cams[1];
cams->md_module = md; cams->md_module = md;
if (cams->md_module == NULL)
warn("%s: module == NULL!", __FUNCTION__);
mutex_init(&cams->lock); /* to 1 == available */ mutex_init(&cams->lock); /* to 1 == available */
for (i = 0; i < num_cams; i++) { for (i = 0; i < num_cams; i++) {
...@@ -1119,7 +1114,8 @@ static int usbvideo_v4l_open(struct inode *inode, struct file *file) ...@@ -1119,7 +1114,8 @@ static int usbvideo_v4l_open(struct inode *inode, struct file *file)
if (uvd->debug > 1) if (uvd->debug > 1)
info("%s($%p)", __FUNCTION__, dev); info("%s($%p)", __FUNCTION__, dev);
usbvideo_ClientIncModCount(uvd); if (0 < usbvideo_ClientIncModCount(uvd))
return -ENODEV;
mutex_lock(&uvd->lock); mutex_lock(&uvd->lock);
if (uvd->user) { if (uvd->user) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment