diff options
-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) | |||
972 | err = class_register(&watchdog_class); | 972 | err = class_register(&watchdog_class); |
973 | if (err < 0) { | 973 | if (err < 0) { |
974 | pr_err("couldn't register class\n"); | 974 | pr_err("couldn't register class\n"); |
975 | return err; | 975 | goto err_register; |
976 | } | 976 | } |
977 | 977 | ||
978 | err = alloc_chrdev_region(&watchdog_devt, 0, MAX_DOGS, "watchdog"); | 978 | err = alloc_chrdev_region(&watchdog_devt, 0, MAX_DOGS, "watchdog"); |
979 | if (err < 0) { | 979 | if (err < 0) { |
980 | pr_err("watchdog: unable to allocate char dev region\n"); | 980 | pr_err("watchdog: unable to allocate char dev region\n"); |
981 | class_unregister(&watchdog_class); | 981 | goto err_alloc; |
982 | return err; | ||
983 | } | 982 | } |
984 | 983 | ||
985 | return 0; | 984 | return 0; |
985 | |||
986 | err_alloc: | ||
987 | class_unregister(&watchdog_class); | ||
988 | err_register: | ||
989 | destroy_workqueue(watchdog_wq); | ||
990 | return err; | ||
986 | } | 991 | } |
987 | 992 | ||
988 | /* | 993 | /* |