X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fusb%2Fcore%2Ffile.c;h=c74404332978e137bb695cc538789f08a6b7aa06;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=39fdceaf55df043389b3b071f4bbddc7792f4278;hpb=db216c3d5e4c040e557a50f8f5d35d5c415e8c1c;p=linux-2.6.git diff --git a/drivers/usb/core/file.c b/drivers/usb/core/file.c index 39fdceaf5..c74404332 100644 --- a/drivers/usb/core/file.c +++ b/drivers/usb/core/file.c @@ -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)