diff options
author | Wei Yongjun <yongjun_wei@trendmicro.com.cn> | 2016-07-19 13:22:34 +0200 |
---|---|---|
committer | Wim Van Sebroeck <wim@iguana.be> | 2016-07-25 12:02:55 +0200 |
commit | 138913cb632be12344982e54ccd12f6f15971bf7 (patch) | |
tree | dbcb5044725b7e6d63e1a037f45726db449e8707 /drivers/watchdog | |
parent | watchdog: pic32-wdt: Fix return value check in pic32_wdt_drv_probe() (diff) | |
download | linux-138913cb632be12344982e54ccd12f6f15971bf7.tar.xz linux-138913cb632be12344982e54ccd12f6f15971bf7.zip |
watchdog: core: Fix error handling of watchdog_dev_init()
Fix the error handling paths of watchdog_dev_init().
Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Diffstat (limited to 'drivers/watchdog')
-rw-r--r-- | drivers/watchdog/watchdog_dev.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c index 270f4bf291e3..f128efc36135 100644 --- a/drivers/watchdog/watchdog_dev.c +++ b/drivers/watchdog/watchdog_dev.c @@ -972,17 +972,22 @@ int __init watchdog_dev_init(void) err = class_register(&watchdog_class); if (err < 0) { pr_err("couldn't register class\n"); - return err; + goto err_register; } err = alloc_chrdev_region(&watchdog_devt, 0, MAX_DOGS, "watchdog"); if (err < 0) { pr_err("watchdog: unable to allocate char dev region\n"); - class_unregister(&watchdog_class); - return err; + goto err_alloc; } return 0; + +err_alloc: + class_unregister(&watchdog_class); +err_register: + destroy_workqueue(watchdog_wq); + return err; } /* |