]> git.hungrycats.org Git - linux/commitdiff
[PATCH] USB: usb/core/file.c::usb_major_init() cleanup.
authorLuiz Capitulino <lcapitulino@prefeitura.sp.gov.br>
Wed, 14 Jul 2004 07:47:56 +0000 (00:47 -0700)
committerGreg Kroah-Hartman <greg@kroah.com>
Wed, 14 Jul 2004 07:47:56 +0000 (00:47 -0700)
 This patch does a cleanup for usb/core/file.c::usb_major_init(), which
 is:

*) in error condition, returns the error code from register_chrdev(),
   insted returning -EBUSY;

*) adds missing audit for class_register();

*) only calls devfs_mk_dir() if the prior calls have success.

Signed-off-by: Luiz Capitulino <lcapitulino@prefeitura.sp.gov.br>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
drivers/usb/core/file.c

index 39fdceaf55df043389b3b071f4bbddc7792f4278..c74404332978e137bb695cc538789f08a6b7aa06 100644 (file)
@@ -79,14 +79,25 @@ static struct class usb_class = {
 
 int usb_major_init(void)
 {
-       if (register_chrdev(USB_MAJOR, "usb", &usb_fops)) {
+       int error;
+
+       error = register_chrdev(USB_MAJOR, "usb", &usb_fops);
+       if (error) {
                err("unable to get major %d for usb devices", USB_MAJOR);
-               return -EBUSY;
+               goto out;
+       }
+
+       error = class_register(&usb_class);
+       if (error) {
+               err("class_register failed for usb devices");
+               unregister_chrdev(USB_MAJOR, "usb");
+               goto out;
        }
 
        devfs_mk_dir("usb");
-       class_register(&usb_class);
-       return 0;
+
+out:
+       return error;
 }
 
 void usb_major_cleanup(void)