ChangeSet 1.1757.66.14, 2004/07/14 14:47:56-07:00, lcapitulino@prefeitura.sp.gov.br [PATCH] USB: usb/core/file.c::usb_major_init() cleanup. 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 Signed-off-by: Greg Kroah-Hartman drivers/usb/core/file.c | 19 +++++++++++++++---- 1 files changed, 15 insertions(+), 4 deletions(-) diff -Nru a/drivers/usb/core/file.c b/drivers/usb/core/file.c --- a/drivers/usb/core/file.c 2004-07-14 16:45:09 -07:00 +++ b/drivers/usb/core/file.c 2004-07-14 16:45:09 -07:00 @@ -79,14 +79,25 @@ 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)