[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20170329161738.ce8c1508f648f9174f0cf8bb@linux-foundation.org>
Date: Wed, 29 Mar 2017 16:17:38 -0700
From: Andrew Morton <akpm@...ux-foundation.org>
To: Andrey Smirnov <andrew.smirnov@...il.com>
Cc: linux-kernel@...r.kernel.org
Subject: Re: [PATCH] kernel/reboot: add devm_register_reboot_notifier
On Mon, 20 Mar 2017 10:17:53 -0700 Andrey Smirnov <andrew.smirnov@...il.com> wrote:
> Add devm_* wrapper around register_reboot_notifier to simplify device
> specific reboot notifier registration/unregistration.
>
> --- a/kernel/reboot.c
> +++ b/kernel/reboot.c
> @@ -104,6 +104,33 @@ int unregister_reboot_notifier(struct notifier_block *nb)
> }
> EXPORT_SYMBOL(unregister_reboot_notifier);
>
> +static void devm_unregister_reboot_notifier(struct device *dev, void *res)
> +{
> + WARN_ON(unregister_reboot_notifier(*(struct notifier_block **)res));
> +}
> +
> +int devm_register_reboot_notifier(struct device *dev, struct notifier_block *nb)
> +{
> + struct notifier_block **rcnb;
> + int ret;
> +
> + rcnb = devres_alloc(devm_unregister_reboot_notifier,
> + sizeof(*rcnb), GFP_KERNEL);
> + if (!rcnb)
> + return -ENOMEM;
> +
> + ret = register_reboot_notifier(nb);
> + if (!ret) {
> + *rcnb = nb;
> + devres_add(dev, rcnb);
> + } else {
> + devres_free(rcnb);
> + }
> +
> + return ret;
> +}
> +EXPORT_SYMBOL(devm_register_reboot_notifier);
Seems reasonable. Can we please have some patches which actually use
this?
Powered by blists - more mailing lists