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

Commit ae44855a authored by Akinobu Mita's avatar Akinobu Mita Committed by Wim Van Sebroeck
Browse files

watchdog: sb_wdog: release irq and reboot notifier in error path and module_exit()



irq and reboot notifier are acquired in module_init() but never released.
They should be released correctly, otherwise reloading the module or error
during module_init() will cause a problem.

Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
Cc: Andrew Sharp <andy.sharp@lsi.com>
Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent 9c03f162
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -305,7 +305,7 @@ static int __init sbwdog_init(void)
	if (ret) {
		printk(KERN_ERR "%s: failed to request irq 1 - %d\n",
						ident.identity, ret);
		return ret;
		goto out;
	}

	ret = misc_register(&sbwdog_miscdev);
@@ -313,14 +313,20 @@ static int __init sbwdog_init(void)
		printk(KERN_INFO "%s: timeout is %ld.%ld secs\n",
				ident.identity,
				timeout / 1000000, (timeout / 100000) % 10);
	} else
		return 0;
	}
	free_irq(1, (void *)user_dog);
out:
	unregister_reboot_notifier(&sbwdog_notifier);

	return ret;
}

static void __exit sbwdog_exit(void)
{
	misc_deregister(&sbwdog_miscdev);
	free_irq(1, (void *)user_dog);
	unregister_reboot_notifier(&sbwdog_notifier);
}

module_init(sbwdog_init);