staging: bcm: fix error handling in bcm_init()

bcm_init() does not have proper error handling of usb_register().
The patch implements one.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Acked-by: Kevin McKinney <klmckinney1@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Alexey Khoroshilov 2012-09-02 23:30:13 +04:00 committed by Greg Kroah-Hartman
parent 1d200e8d0a
commit d7b990a035
1 changed files with 9 additions and 1 deletions

View File

@ -669,6 +669,8 @@ struct class *bcm_class;
static __init int bcm_init(void) static __init int bcm_init(void)
{ {
int retval;
printk(KERN_INFO "%s: %s, %s\n", DRV_NAME, DRV_DESCRIPTION, DRV_VERSION); printk(KERN_INFO "%s: %s, %s\n", DRV_NAME, DRV_DESCRIPTION, DRV_VERSION);
printk(KERN_INFO "%s\n", DRV_COPYRIGHT); printk(KERN_INFO "%s\n", DRV_COPYRIGHT);
@ -678,7 +680,13 @@ static __init int bcm_init(void)
return PTR_ERR(bcm_class); return PTR_ERR(bcm_class);
} }
return usb_register(&usbbcm_driver); retval = usb_register(&usbbcm_driver);
if (retval < 0) {
printk(KERN_ERR DRV_NAME ": could not register usb driver\n");
class_destroy(bcm_class);
return retval;
}
return 0;
} }
static __exit void bcm_exit(void) static __exit void bcm_exit(void)