[PATCH] kexec: crash: don't save swapper_pg_dir for !CONFIG_MMU configurations
akpm at linux-foundation.org
Mon Feb 27 20:25:55 EST 2012
On Tue, 28 Feb 2012 09:51:30 +0900 Simon Horman <horms at verge.net.au> wrote:
> On Mon, Feb 27, 2012 at 04:26:31PM -0800, Andrew Morton wrote:
> > On Tue, 28 Feb 2012 09:19:28 +0900
> > Simon Horman <horms at verge.net.au> wrote:
> > > > > --- a/kernel/kexec.c
> > > > > +++ b/kernel/kexec.c
> > > > > @@ -1462,7 +1462,9 @@ static int __init crash_save_vmcoreinfo_init(void)
> > > > >
> > > > > VMCOREINFO_SYMBOL(init_uts_ns);
> > > > > VMCOREINFO_SYMBOL(node_online_map);
> > > > > +#ifdef CONFIG_MMU
> > > > > VMCOREINFO_SYMBOL(swapper_pg_dir);
> > > > > +#endif
> > > > > VMCOREINFO_SYMBOL(_stext);
> > > > > VMCOREINFO_SYMBOL(vmlist);
> > > >
> > > > Well, what might be the effects of this patch? nommu crashfiles will
> > > > no longer have the swapper_pg_dir string? What are the chances that
> > > > someone's (badly written!) downstream tool will crash and burn if this
> > > > is absent?
> > >
> > > My understanding is that up until this patch creating a dump
> > > for nonmmu platform wouldn't work.
> > Surprised. From reading the code I expect it would have emitted
> > SYMBOL(swapper_pg_dir)=0
> Hi Andrew,
> My understanding from discussion with Will earlier in this thread is that if
> CONFIG_MMU is not defined then swapper_pg_dir is NULL and the current code
> doesn't compile.
> The only case where it's interesting is when you have CONFIG_MMU
> enabled - otherwise it's always NULL. If it's #defined as NULL, the
> current code will fail at build time so simply omitting it from the
> dump seems like the best bet to me (the alternative being to add a
> NULL entry explicitly, but I don't see what the gains us).
OK. That's because everything is all screwed up ;)
swapper_pg_dir is normally an array. But on nommu it is a pointer.
VMCOREINFO_SYMBOL() wants to take its address (unnecessary on an array)
and this blows up when fed a pointer.
Still, you didn't answer my question! What effect will the absence of
SYMBOL(swapper_pg_dir)= have upon downstream tools? If "none" then
sure, let's remove it. If "explosion" then we should emit a dummy
SYMBOL(swapper_pg_dir)=0 if CONFIG_NOMMU.
More information about the kexec