Jiri Slaby wrote:
# HG changeset patch # User Jiri Slaby jirislaby@gmail.com # Date 1191675459 -7200 # Node ID a39992015edfc30818c224d1886dc8311bc3106b # Parent d1d8e50056430b80d13f729e4a87dfb5ffee58dc v4l2_extension: hlp_init/exit cleanup
use helper_major, not major 0 (as it is not 0), check for proper error value returned by class_create (it doesn't return NULL, but ERR_PTR encoded retval). also propagate the retval one layer upper.
Signed-off-by: Jiri Slaby jirislaby@gmail.com
diff --git a/linux/drivers/media/video/v4l2_extension/v4l2_extension-hlp.c b/linux/drivers/media/video/v4l2_extension/v4l2_extension-hlp.c --- a/linux/drivers/media/video/v4l2_extension/v4l2_extension-hlp.c +++ b/linux/drivers/media/video/v4l2_extension/v4l2_extension-hlp.c @@ -112,17 +112,23 @@ static const struct file_operations v4l2
int v4l2ext_hlp_init(void) {
- int ret;
- /* Unnamed device creation */
- helper_major = register_chrdev(0, HELPER_IF_NAME, &v4l2ext_hlp_fops);
- if (helper_major < 0) {
printk(KERN_WARNING "v4l2_extension: unable to get major\n");
return -EIO;
ret = register_chrdev(0, HELPER_IF_NAME, &v4l2ext_hlp_fops);
if (ret < 0) {
printk(KERN_ERR "v4l2_extension: unable to get major\n");
goto err;
}
helper_major = ret;
/* create a driver class in order to automate udev */ helper_class = class_create(THIS_MODULE, HELPER_IF_NAME);
- if (!helper_class)
return -EINVAL;
if (IS_ERR(helper_class)) {
printk(KERN_ERR "v4l2_extension: unable to create a class\n");
ret = PTR_ERR(helper_class);
goto err_unr;
}
class_device_create(helper_class, NULL,
@@ -130,11 +136,15 @@ int v4l2ext_hlp_init(void) NULL, HELPER_IF_NAME);
return 0; +err_unr:
- unregister_chrdev(helper_major, HELPER_IF_NAME);
+err:
- return ret;
}
void v4l2ext_hlp_fini(void) { class_device_destroy(helper_class, MKDEV(helper_major, 0));
- unregister_chrdev(0, HELPER_IF_NAME);
- unregister_chrdev(helper_major, HELPER_IF_NAME); class_destroy(helper_class);
} /* ----------------------------------------------------------- */
Patch committed at http://linuxtv.org/hg/~tmerle/v4l2_extension/
Thierry