Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c6cb13ae authored by Wim Van Sebroeck's avatar Wim Van Sebroeck
Browse files

[WATCHDOG] misc_register patch



Make sure that we first do a register_reboot_notifier before we
do a misc_register. A misc_register opens the interface to
userspace and it's best to do this as the last action.

Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent 01c785dc
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -413,18 +413,18 @@ static int __init watchdog_init(void)
	/* Calculate the watchdog's timeout */
	ali_settimer(timeout);

	ret = misc_register(&ali_miscdev);
	ret = register_reboot_notifier(&ali_notifier);
	if (ret != 0) {
		printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n",
			WATCHDOG_MINOR, ret);
		printk(KERN_ERR PFX "cannot register reboot notifier (err=%d)\n",
			ret);
		goto out;
	}

	ret = register_reboot_notifier(&ali_notifier);
	ret = misc_register(&ali_miscdev);
	if (ret != 0) {
		printk(KERN_ERR PFX "cannot register reboot notifier (err=%d)\n",
			ret);
		goto unreg_miscdev;
		printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n",
			WATCHDOG_MINOR, ret);
		goto unreg_reboot;
	}

	printk(KERN_INFO PFX "initialized. timeout=%d sec (nowayout=%d)\n",
@@ -432,8 +432,8 @@ static int __init watchdog_init(void)

out:
	return ret;
unreg_miscdev:
	misc_deregister(&ali_miscdev);
unreg_reboot:
	unregister_reboot_notifier(&ali_notifier);
	goto out;
}

@@ -449,8 +449,8 @@ static void __exit watchdog_exit(void)
	ali_stop();

	/* Deregister */
	unregister_reboot_notifier(&ali_notifier);
	misc_deregister(&ali_miscdev);
	unregister_reboot_notifier(&ali_notifier);
	pci_dev_put(ali_pci);
}

+9 −9
Original line number Diff line number Diff line
@@ -377,18 +377,18 @@ static int __init alim7101_wdt_init(void)
			timeout);
	}

	rc = misc_register(&wdt_miscdev);
	rc = register_reboot_notifier(&wdt_notifier);
	if (rc) {
		printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n",
			wdt_miscdev.minor, rc);
		printk(KERN_ERR PFX "cannot register reboot notifier (err=%d)\n",
			rc);
		goto err_out;
	}

	rc = register_reboot_notifier(&wdt_notifier);
	rc = misc_register(&wdt_miscdev);
	if (rc) {
		printk(KERN_ERR PFX "cannot register reboot notifier (err=%d)\n",
			rc);
		goto err_out_miscdev;
		printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n",
			wdt_miscdev.minor, rc);
		goto err_out_reboot;
	}

	if (nowayout) {
@@ -399,8 +399,8 @@ static int __init alim7101_wdt_init(void)
		timeout, nowayout);
	return 0;

err_out_miscdev:
	misc_deregister(&wdt_miscdev);
err_out_reboot:
	unregister_reboot_notifier(&wdt_notifier);
err_out:
	pci_dev_put(alim7101_pmu);
	return rc;
+9 −9
Original line number Diff line number Diff line
@@ -359,20 +359,20 @@ static int __init sbc60xxwdt_init(void)
		}
	}

	rc = misc_register(&wdt_miscdev);
	rc = register_reboot_notifier(&wdt_notifier);
	if (rc)
	{
		printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n",
			wdt_miscdev.minor, rc);
		printk(KERN_ERR PFX "cannot register reboot notifier (err=%d)\n",
			rc);
		goto err_out_region2;
	}

	rc = register_reboot_notifier(&wdt_notifier);
	rc = misc_register(&wdt_miscdev);
	if (rc)
	{
		printk(KERN_ERR PFX "cannot register reboot notifier (err=%d)\n",
			rc);
		goto err_out_miscdev;
		printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n",
			wdt_miscdev.minor, rc);
		goto err_out_reboot;
	}

	printk(KERN_INFO PFX "WDT driver for 60XX single board computer initialised. timeout=%d sec (nowayout=%d)\n",
@@ -380,8 +380,8 @@ static int __init sbc60xxwdt_init(void)

	return 0;

err_out_miscdev:
	misc_deregister(&wdt_miscdev);
err_out_reboot:
	unregister_reboot_notifier(&wdt_notifier);
err_out_region2:
	if ((wdt_stop != 0x45) && (wdt_stop != wdt_start))
		release_region(wdt_stop,1);
+5 −5
Original line number Diff line number Diff line
@@ -231,17 +231,17 @@ static int __init scx200_wdt_init(void)

	sema_init(&open_semaphore, 1);

	r = misc_register(&scx200_wdt_miscdev);
	r = register_reboot_notifier(&scx200_wdt_notifier);
	if (r) {
		printk(KERN_ERR NAME ": unable to register reboot notifier");
		release_region(scx200_cb_base + SCx200_WDT_OFFSET,
				SCx200_WDT_SIZE);
		return r;
	}

	r = register_reboot_notifier(&scx200_wdt_notifier);
	r = misc_register(&scx200_wdt_miscdev);
	if (r) {
		printk(KERN_ERR NAME ": unable to register reboot notifier");
		misc_deregister(&scx200_wdt_miscdev);
		unregister_reboot_notifier(&scx200_wdt_notifier);
		release_region(scx200_cb_base + SCx200_WDT_OFFSET,
				SCx200_WDT_SIZE);
		return r;
@@ -252,8 +252,8 @@ static int __init scx200_wdt_init(void)

static void __exit scx200_wdt_cleanup(void)
{
	unregister_reboot_notifier(&scx200_wdt_notifier);
	misc_deregister(&scx200_wdt_miscdev);
	unregister_reboot_notifier(&scx200_wdt_notifier);
	release_region(scx200_cb_base + SCx200_WDT_OFFSET,
		       SCx200_WDT_SIZE);
}
+9 −9
Original line number Diff line number Diff line
@@ -373,20 +373,20 @@ static int __init w83877f_wdt_init(void)
		goto err_out_region1;
	}

	rc = misc_register(&wdt_miscdev);
	rc = register_reboot_notifier(&wdt_notifier);
	if (rc)
	{
		printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n",
			wdt_miscdev.minor, rc);
		printk(KERN_ERR PFX "cannot register reboot notifier (err=%d)\n",
			rc);
		goto err_out_region2;
	}

	rc = register_reboot_notifier(&wdt_notifier);
	rc = misc_register(&wdt_miscdev);
	if (rc)
	{
		printk(KERN_ERR PFX "cannot register reboot notifier (err=%d)\n",
			rc);
		goto err_out_miscdev;
		printk(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n",
			wdt_miscdev.minor, rc);
		goto err_out_reboot;
	}

	printk(KERN_INFO PFX "WDT driver for W83877F initialised. timeout=%d sec (nowayout=%d)\n",
@@ -394,8 +394,8 @@ static int __init w83877f_wdt_init(void)

	return 0;

err_out_miscdev:
	misc_deregister(&wdt_miscdev);
err_out_reboot:
	unregister_reboot_notifier(&wdt_notifier);
err_out_region2:
	release_region(WDT_PING,1);
err_out_region1:
Loading