Skip to content

Commit

Permalink
V4L/DVB (4367): Videodev: Handle class_device related errors
Browse files Browse the repository at this point in the history
Add proper error checking and roll-back for failure of
class_device_create_file() in videodev.c.  Print error messages and
unroll partially created sysfs entries.
Also, failure of class_device_register() in video_register_device() is
handled correctly.  It was failing to de-allocate the minor number.  This
must be done in video_register_device(), since the caller has no way of
knowing if failure occurred before or after the class device was
registered.
Also added an error message if video_register_device() is called with
an unknown type, which should never happen.

Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
  • Loading branch information
Trent Piepho authored and Mauro Carvalho Chehab committed Jul 29, 2006
1 parent df27327 commit 53dd8de
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions drivers/media/video/videodev.c
Original file line number Diff line number Diff line change
Expand Up @@ -1538,6 +1538,8 @@ int video_register_device(struct video_device *vfd, int type, int nr)
name_base = "radio";
break;
default:
printk(KERN_ERR "%s called with unknown type: %d\n",
__FUNCTION__, type);
return -1;
}

Expand Down Expand Up @@ -1592,6 +1594,15 @@ int video_register_device(struct video_device *vfd, int type, int nr)
"http://lwn.net/Articles/36850/\n", vfd->name);
#endif
return 0;

fail_classdev:
class_device_unregister(&vfd->class_dev);
fail_minor:
mutex_lock(&videodev_lock);
video_device[vfd->minor] = NULL;
vfd->minor = -1;
mutex_unlock(&videodev_lock);
return ret;
}

/**
Expand Down

0 comments on commit 53dd8de

Please sign in to comment.