Skip to content

Commit

Permalink
V4L/DVB (8414): videodev/cx18: fix get_index bug and error-handling l…
Browse files Browse the repository at this point in the history
…ock-ups

Fix a bug in get_index that was introduced earlier.
Also fix two error handling lock-ups in videodev and cx18 that
where found thanks to that bug.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
  • Loading branch information
Hans Verkuil authored and Mauro Carvalho Chehab committed Jul 20, 2008
1 parent f19ad39 commit fac3639
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
4 changes: 3 additions & 1 deletion drivers/media/video/cx18/cx18-streams.c
Original file line number Diff line number Diff line change
Expand Up @@ -311,8 +311,10 @@ void cx18_streams_cleanup(struct cx18 *cx, int unregister)

/* Teardown all streams */
for (type = 0; type < CX18_MAX_STREAMS; type++) {
if (cx->streams[type].dvb.enabled)
if (cx->streams[type].dvb.enabled) {
cx18_dvb_unregister(&cx->streams[type]);
cx->streams[type].dvb.enabled = false;
}

vdev = cx->streams[type].v4l2dev;

Expand Down
9 changes: 5 additions & 4 deletions drivers/media/video/videodev.c
Original file line number Diff line number Diff line change
Expand Up @@ -2023,7 +2023,7 @@ EXPORT_SYMBOL(video_ioctl2);
static int get_index(struct video_device *vdev, int num)
{
u32 used = 0;
const unsigned max_index = sizeof(used) * 8 - 1;
const int max_index = sizeof(used) * 8 - 1;
int i;

/* Currently a single v4l driver instance cannot create more than
Expand Down Expand Up @@ -2145,14 +2145,15 @@ int video_register_device_index(struct video_device *vfd, int type, int nr,
vfd->minor=i;

ret = get_index(vfd, index);
vfd->index = ret;

mutex_unlock(&videodev_lock);

if (ret < 0) {
printk(KERN_ERR "%s: get_index failed\n", __func__);
goto fail_minor;
}

vfd->index = ret;

mutex_unlock(&videodev_lock);
mutex_init(&vfd->lock);

/* sysfs class */
Expand Down

0 comments on commit fac3639

Please sign in to comment.