public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Vivek Goyal <vgoyal@redhat.com>
To: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>,
	linux kernel mailing list <linux-kernel@vger.kernel.org>,
	Jarod Wilson <jwilson@redhat.com>
Subject: Re: Query about kdump_msg hook into crash_kexec()
Date: Wed, 2 Feb 2011 21:05:28 -0500	[thread overview]
Message-ID: <20110203020528.GA21603@redhat.com> (raw)
In-Reply-To: <20110203094715.939C.A69D9226@jp.fujitsu.com>

On Thu, Feb 03, 2011 at 09:55:41AM +0900, KOSAKI Motohiro wrote:
> Hi
> 
> > Hi,
> > 
> > I noticed following commit which hooks into crash_kexec() for calling
> > kmsg_dump().
> > 
> > I think it is not a very good idea to pass control to modules after
> > crash_kexec() has been called. Because modules can try to take locks
> > or try to do some other operations which we really should not be doing
> > now and fail kdump also. The whole design of kdump is built on the
> > fact that in crashing kernel we do minimal thing and try to make 
> > transition to second kernel robust. Now with this hook, kmsg dumper
> > breaks that assumption.
> 
> I guess you talked about some foolish can shoot their own foot. if so,
> Yes. Any kernel module can make kernel panic or more disaster result.

Yes, the difference is that once a fool shoots his foot, kernel tries
to take a meaningful action to figure out what went wrong. Like displayig
an oops backtrace or like dumping a core (if kdump is configured) so
that one can figure out who was the fool and what did who do.

Now think give the control to two fools. First fool shoots his foot
and then kernel transfers the control to another fool which completely
screws up the situation and one can not save the core.

> 
> 
> > Anyway, if an image is loaded and we have setup to capture dump also
> > why do we need to save kmsg with the help of an helper. I am assuming
> > this is more of a debugging aid if we have no other way to capture the
> > kernel log buffer. So if somebody has setup kdump to capture the
> > vmcore, why to call another handler which tries to save part of the
> > vmcore (kmsg) separately.
> 
> No.
> 
> kmsg_dump() is desingned for embedded.

Great. And I like the idea of trying to save some useful information 
to non volatile RAM or flash or something like that.

> kexec for non dumping purpose. (Have you seen your embedded devices 
> show "Now storing dump image.." message?)

No I have not seen. Can you explain a bit more that apart from kernel
dump, what are the other purposes of kdump. 

> 
> Anyway, you can feel free to avoid to use ksmg_dump().

Yes, that is one more way but this information is not even exported to
user space to figure out if there are any registerd users of kmsg_dump.

Seconly there are two more important things.

- Why do you need a notification from inside crash_kexec(). IOW, what
  is the usage of KMSG_DUMP_KEXEC.

- One can anyway call kmsg_dump() outside crash_kexec() before it so
  that kmsg_dump notification will go out before kdump gets the control.
  What I am arguing here is that it is not necessarily a very good idea
  because external modules can try to do any amount of unsafe actions
  once we export the hook.

  Doing this is still fine if kdump is not configured as anyway syste would
  have rebooted. But if kdump is configured, then we are just reducing
  the reliability of the operation by passing the control in the hands
  of unaudited code and trusting it when kernel data structures are
  corrupt.

  So to me, sending out kmsg_dump notifications are perfectly fine when
  kdump is not configured. But if it is configured, then it probably is
  not a good idea. Anyway, if you have configured the system to capture
  the full dump, why do you also need kmsg_dump. And if you are happy
  with kmsg_dump() then you don't need kdump. So these both seem to be
  mutually exclusive anyway.

Thanks
Vivek

  reply	other threads:[~2011-02-03  2:05 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-31 22:59 Query about kdump_msg hook into crash_kexec() Vivek Goyal
2011-02-01  7:19 ` Américo Wang
2011-02-01  7:33   ` Eric W. Biederman
2011-02-01  7:38     ` Américo Wang
2011-02-01  8:13       ` [Patch] kexec: remove KMSG_DUMP_KEXEC (was Re: Query about kdump_msg hook into crash_kexec()) Américo Wang
2011-02-01 15:28         ` Vivek Goyal
2011-02-01 16:06           ` Jarod Wilson
2011-02-03  0:59         ` KOSAKI Motohiro
2011-02-03  2:07           ` Vivek Goyal
2011-02-03  4:53             ` KOSAKI Motohiro
2011-05-26 20:10               ` Andrew Morton
2011-05-28  1:43                 ` Eric W. Biederman
2011-05-30  7:30                   ` Américo Wang
2011-05-30  5:13                 ` KOSAKI Motohiro
2011-05-31 21:51                   ` Vivek Goyal
2011-06-09 11:00                     ` KOSAKI Motohiro
2011-06-14 22:13                       ` Vivek Goyal
2011-05-31 20:58                 ` Seiji Aguchi
2011-05-31 21:37                   ` Vivek Goyal
2011-05-31 22:24                     ` Seiji Aguchi
2011-06-02  3:26                       ` Eric W. Biederman
2011-06-08  0:00                         ` Andrew Morton
2011-06-09 11:15                         ` KOSAKI Motohiro
2011-02-03  0:55 ` Query about kdump_msg hook into crash_kexec() KOSAKI Motohiro
2011-02-03  2:05   ` Vivek Goyal [this message]
2011-02-03  4:52     ` KOSAKI Motohiro
2011-02-03  5:20       ` KOSAKI Motohiro
2011-02-04 15:00         ` Vivek Goyal
2011-03-08  1:31           ` KOSAKI Motohiro
2011-02-04 14:58       ` Vivek Goyal
2011-02-03 18:38     ` Seiji Aguchi
2011-02-03 21:13       ` Eric W. Biederman
2011-02-03 22:08         ` Seiji Aguchi
2011-02-04  2:24           ` Américo Wang
2011-02-04  2:50             ` Vivek Goyal
2011-02-04  3:28               ` Américo Wang
2011-02-04  6:40                 ` KOSAKI Motohiro
2011-02-08 16:46           ` Vivek Goyal
2011-02-08 17:35             ` Eric W. Biederman
2011-02-08 19:27               ` Vivek Goyal
2011-02-08 19:58                 ` Eric W. Biederman

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=20110203020528.GA21603@redhat.com \
    --to=vgoyal@redhat.com \
    --cc=ebiederm@xmission.com \
    --cc=jwilson@redhat.com \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox