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>
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)