aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/watchdog/watchdog_dev.c11
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
986err_alloc:
987 class_unregister(&watchdog_class);
988err_register:
989 destroy_workqueue(watchdog_wq);
990 return err;
986} 991}
987 992
988/* 993/*