From: Shuah Khan <shuahkhan@gmail.com>
To: Alexander Holler <holler@ahsoftware.de>
Cc: shuahkhan@gmail.com, linux-kernel@vger.kernel.org,
Richard Purdie <rpurdie@rpsys.net>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH v2] leds: heartbeat: stop on shutdown
Date: Tue, 24 Apr 2012 11:00:10 -0600 [thread overview]
Message-ID: <1335286810.2347.18.camel@lorien2> (raw)
In-Reply-To: <4F96D58A.3070008@ahsoftware.de>
On Tue, 2012-04-24 at 18:32 +0200, Alexander Holler wrote:
> Am 24.04.2012 17:24, schrieb Shuah Khan:
> > On Tue, 2012-04-24 at 17:07 +0200, Alexander Holler wrote:
> >> A halted kernel should not show a heartbeat.
> >>
> >> Signed-off-by: Alexander Holler <holler@ahsoftware.de>
> >> ---
> >> drivers/leds/ledtrig-heartbeat.c | 18 +++++++++++++++++-
> >> 1 files changed, 17 insertions(+), 1 deletions(-)
> >>
> >> diff --git a/drivers/leds/ledtrig-heartbeat.c b/drivers/leds/ledtrig-heartbeat.c
> >> index 759c0bb..1c05bd9 100644
> >> --- a/drivers/leds/ledtrig-heartbeat.c
> >> +++ b/drivers/leds/ledtrig-heartbeat.c
> >> @@ -18,6 +18,7 @@
> >> #include <linux/timer.h>
> >> #include <linux/sched.h>
> >> #include <linux/leds.h>
> >> +#include <linux/reboot.h>
> >> #include "leds.h"
> >>
> >> struct heartbeat_trig_data {
> >> @@ -101,13 +102,28 @@ static struct led_trigger heartbeat_led_trigger = {
> >> .deactivate = heartbeat_trig_deactivate,
> >> };
> >>
> >> +static int heartbeat_reboot_notifier(struct notifier_block *nb,
> >> + unsigned long code, void *unused)
> >> +{
> >> + led_trigger_unregister(&heartbeat_led_trigger);
> >> + return NOTIFY_DONE;
> >> +}
I am sorry I didn't catch this the last time. Do you need to call
unregister here? Looks like trigger is going away with a registered
reboot notifier. Might be fine, since reboot is going to happen.
> >> +
> >> +static struct notifier_block heartbeat_reboot_nb = {
> >> + .notifier_call = heartbeat_reboot_notifier,
> >> +};
> >> +
> >> static int __init heartbeat_trig_init(void)
> >> {
> >> - return led_trigger_register(&heartbeat_led_trigger);
> >> + int rc = led_trigger_register(&heartbeat_led_trigger);
> >> + if( ! rc )
> >> + register_reboot_notifier(&heartbeat_reboot_nb);
> >
> > Do you need to check return value here? I see return value being checked
> > in some places in the kernel and not in others. Not checking is fine for
> > now since register_reboot_notifier() always returns 0.
> >
> > Maybe adding return handling might not be a bad idea to be consistent
> > with other places that do check.
>
> What to do if it fails? As long as unregister_reboot_notifier() doesn't
> do something bad with non-registered notifiers (which it doesn't), I
> would let the init still succeed.
Yes I agree that init should still succeed. It might be helpful to throw
out a kernel message when this occurs though since register shouldn't
fail unless there is an error.
> And to not unregister a
> non-registered-reboot_notifier, a long-living bool would be needed.
Yes keeping state is probably required to unregister conditionally.
Since unregistering is safe (simply returns -ENOENT) when called after
register fails. So I would think you can call unregister even when
register fails.
-- Shuah
next prev parent reply other threads:[~2012-04-24 17:00 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-24 13:43 [PATCH] leds: heartbeat: stop on shutdown Alexander Holler
2012-04-24 15:07 ` [PATCH v2] " Alexander Holler
2012-04-24 15:24 ` Shuah Khan
2012-04-24 16:32 ` Alexander Holler
2012-04-24 17:00 ` Shuah Khan [this message]
2012-04-24 17:27 ` Alexander Holler
2012-04-24 17:31 ` Shuah Khan
2012-04-24 17:34 ` Alexander Holler
2012-04-24 22:30 ` [PATCH v3] leds: heartbeat: stop on shutdown, reboot or panic Alexander Holler
2012-04-24 22:38 ` [PATCH v4] " Alexander Holler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1335286810.2347.18.camel@lorien2 \
--to=shuahkhan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=holler@ahsoftware.de \
--cc=linux-kernel@vger.kernel.org \
--cc=rpurdie@rpsys.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.