[WATCHDOG] ib700wdt.c clean-up init and exit routines

clean-up the init and exit routines so that they use
the same sequence.

Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
diff --git a/drivers/char/watchdog/ib700wdt.c b/drivers/char/watchdog/ib700wdt.c
index 5510db2..d379bf0 100644
--- a/drivers/char/watchdog/ib700wdt.c
+++ b/drivers/char/watchdog/ib700wdt.c
@@ -300,6 +300,10 @@
 	.notifier_call = ibwdt_notify_sys,
 };
 
+/*
+ *	Init & exit routines
+ */
+
 static int __init ibwdt_init(void)
 {
 	int res;
@@ -307,11 +311,6 @@
 	printk(KERN_INFO PFX "WDT driver for IB700 single board computer initialising.\n");
 
 	spin_lock_init(&ibwdt_lock);
-	res = misc_register(&ibwdt_miscdev);
-	if (res) {
-		printk (KERN_ERR PFX "failed to register misc device\n");
-		goto out_nomisc;
-	}
 
 #if WDT_START != WDT_STOP
 	if (!request_region(WDT_STOP, 1, "IB700 WDT")) {
@@ -326,13 +325,22 @@
 		res = -EIO;
 		goto out_nostartreg;
 	}
+
 	res = register_reboot_notifier(&ibwdt_notifier);
 	if (res) {
 		printk (KERN_ERR PFX "Failed to register reboot notifier.\n");
 		goto out_noreboot;
 	}
+
+	res = misc_register(&ibwdt_miscdev);
+	if (res) {
+		printk (KERN_ERR PFX "failed to register misc device\n");
+		goto out_nomisc;
+	}
 	return 0;
 
+out_nomisc:
+	unregister_reboot_notifier(&ibwdt_notifier);
 out_noreboot:
 	release_region(WDT_START, 1);
 out_nostartreg:
@@ -340,8 +348,6 @@
 	release_region(WDT_STOP, 1);
 #endif
 out_nostopreg:
-	misc_deregister(&ibwdt_miscdev);
-out_nomisc:
 	return res;
 }
 
@@ -350,10 +356,10 @@
 {
 	misc_deregister(&ibwdt_miscdev);
 	unregister_reboot_notifier(&ibwdt_notifier);
+	release_region(WDT_START,1);
 #if WDT_START != WDT_STOP
 	release_region(WDT_STOP,1);
 #endif
-	release_region(WDT_START,1);
 }
 
 module_init(ibwdt_init);