From d7b990a035a86a07e81231caceb6e624056c258f Mon Sep 17 00:00:00 2001 From: Alexey Khoroshilov Date: Sun, 2 Sep 2012 23:30:13 +0400 Subject: [PATCH] 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 Acked-by: Kevin McKinney Signed-off-by: Greg Kroah-Hartman --- drivers/staging/bcm/InterfaceInit.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/staging/bcm/InterfaceInit.c b/drivers/staging/bcm/InterfaceInit.c index 8f85de6a57ba..57452efa6abb 100644 --- a/drivers/staging/bcm/InterfaceInit.c +++ b/drivers/staging/bcm/InterfaceInit.c @@ -669,6 +669,8 @@ struct class *bcm_class; 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\n", DRV_COPYRIGHT); @@ -678,7 +680,13 @@ static __init int bcm_init(void) 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) -- 2.20.1