From: "P. Christeas" <p_christ-U04EIuiosng@public.gmane.org>
To: Bernd Petrovitsch <bernd-GBwJepH+xoVeoWH0uzbU5w@public.gmane.org>
Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
lkml <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH] 2.6.0-test4: Trivial /sys/power/state patch, sleep status report
Date: Tue, 26 Aug 2003 01:47:50 +0300 [thread overview]
Message-ID: <200308260147.50968.p_christ@hol.gr> (raw)
In-Reply-To: <1061851218.12331.23.camel-j7ksBhXOGzoJmsy6czSMtA@public.gmane.org>
Bernd Petrovitsch wrote:
> On Tue, 2003-08-26 at 00:25, P. Christeas wrote:
> > Just found out that by 'echo sth_wrong > /sys/power/state' the kernel
> > would oops in a fatal way (no clean exit from there).
> > The oops suggested that the code would enter an invalid fn.
> >
> > You may apply the included patch to solve the bug. IMHO doing a clean
> > exit is much preferrable than having BUG() there.
>
> > diff -Bbur /diskb/users/panos/linux-off/kernel/power/main.c
> > /usr/src/linux/kernel/power/main.c ---
> > /diskb/users/panos/linux-off/kernel/power/main.c 2003-08-23
> > 12:13:17.000000000 +0300 +++
> > /usr/src/linux/kernel/power/main.c 2003-08-26 00:59:34.000000000 +0300 @@
> > -500,7 +514,7 @@
> > if (s->name && !strcmp(buf,s->name))
> > break;
> > }
> > - if (s)
> > + if ( (s) && (state < PM_SUSPEND_MAX) )
> > error = enter_state(state);
> > else
> > error = -EINVAL;
>
> What do you think about the attached patch to solve the bug and remove a
> warning?
>
> Bernd
Already tried that. If you look more closely, the s will receive the state
*before* the name *in it* is strcmp()'ed. This means it won't be NULL anyway.
> if (s->name && !strcmp(buf,s->name))
> break;
I also thought of checking "( (s) && (s->name !=NULL) )" , but IMHO the
'state' check is cleaner (no dereference).
--- linux-2.6.0-test4/kernel/power/main.c Sat Aug 23 01:53:13 2003
+++ linux-2.6.0-test4-patched/kernel/power/main.c Mon Aug 25 21:16:50
2003
@@ -492,7 +492,7 @@
static ssize_t state_store(struct subsystem * subsys, const char * buf,
size_t n)
{
u32 state;
- struct pm_state * s;
+ struct pm_state * s = NULL;
int error;
for (state = 0; state < PM_SUSPEND_MAX; state++) {
WARNING: multiple messages have this Message-ID (diff)
From: "P. Christeas" <p_christ@hol.gr>
To: Bernd Petrovitsch <bernd@firmix.at>
Cc: acpi-devel@lists.sourceforge.net, lkml <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] 2.6.0-test4: Trivial /sys/power/state patch, sleep status report
Date: Tue, 26 Aug 2003 01:47:50 +0300 [thread overview]
Message-ID: <200308260147.50968.p_christ@hol.gr> (raw)
In-Reply-To: <1061851218.12331.23.camel@gimli.at.home>
Bernd Petrovitsch wrote:
> On Tue, 2003-08-26 at 00:25, P. Christeas wrote:
> > Just found out that by 'echo sth_wrong > /sys/power/state' the kernel
> > would oops in a fatal way (no clean exit from there).
> > The oops suggested that the code would enter an invalid fn.
> >
> > You may apply the included patch to solve the bug. IMHO doing a clean
> > exit is much preferrable than having BUG() there.
>
> > diff -Bbur /diskb/users/panos/linux-off/kernel/power/main.c
> > /usr/src/linux/kernel/power/main.c ---
> > /diskb/users/panos/linux-off/kernel/power/main.c 2003-08-23
> > 12:13:17.000000000 +0300 +++
> > /usr/src/linux/kernel/power/main.c 2003-08-26 00:59:34.000000000 +0300 @@
> > -500,7 +514,7 @@
> > if (s->name && !strcmp(buf,s->name))
> > break;
> > }
> > - if (s)
> > + if ( (s) && (state < PM_SUSPEND_MAX) )
> > error = enter_state(state);
> > else
> > error = -EINVAL;
>
> What do you think about the attached patch to solve the bug and remove a
> warning?
>
> Bernd
Already tried that. If you look more closely, the s will receive the state
*before* the name *in it* is strcmp()'ed. This means it won't be NULL anyway.
> if (s->name && !strcmp(buf,s->name))
> break;
I also thought of checking "( (s) && (s->name !=NULL) )" , but IMHO the
'state' check is cleaner (no dereference).
--- linux-2.6.0-test4/kernel/power/main.c Sat Aug 23 01:53:13 2003
+++ linux-2.6.0-test4-patched/kernel/power/main.c Mon Aug 25 21:16:50
2003
@@ -492,7 +492,7 @@
static ssize_t state_store(struct subsystem * subsys, const char * buf,
size_t n)
{
u32 state;
- struct pm_state * s;
+ struct pm_state * s = NULL;
int error;
for (state = 0; state < PM_SUSPEND_MAX; state++) {
next prev parent reply other threads:[~2003-08-25 22:47 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-08-25 22:25 [PATCH] 2.6.0-test4: Trivial /sys/power/state patch, sleep status report P. Christeas
2003-08-25 22:25 ` P. Christeas
[not found] ` <200308260125.30194.p_christ-U04EIuiosng@public.gmane.org>
2003-08-25 22:40 ` Bernd Petrovitsch
2003-08-25 22:40 ` Bernd Petrovitsch
[not found] ` <1061851218.12331.23.camel-j7ksBhXOGzoJmsy6czSMtA@public.gmane.org>
2003-08-25 22:47 ` P. Christeas [this message]
2003-08-25 22:47 ` P. Christeas
[not found] ` <200308260147.50968.p_christ-U04EIuiosng@public.gmane.org>
2003-08-25 22:57 ` Bernd Petrovitsch
2003-08-25 22:57 ` Bernd Petrovitsch
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=200308260147.50968.p_christ@hol.gr \
--to=p_christ-u04eiuiosng@public.gmane.org \
--cc=acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=bernd-GBwJepH+xoVeoWH0uzbU5w@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/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.