Make sure we populate the initroot filesystem late enough
Linus Torvalds
torvalds at linux-foundation.org
Mon Feb 26 15:13:49 EST 2007
On Sun, 25 Feb 2007, David Woodhouse wrote:
>
> > Can you try adding something like
> >
> > memset(start, 0xf0, end - start);
>
> Yeah, I did that before giving up on it for the day and going in search
> of dinner. It changes the failure mode to a BUG() in
> cache_free_debugcheck(), at line 2876 of mm/slab.c
Ok, that's just strange.
One obvious thing to do would be to remove all the "__initdata" entries in
mm/slab.c.. But I'd also like to see the full backtrace for the BUG_ON(),
in case that gives any clues at all.
> It smells like the pages weren't actually reserved in the first place
> and we were blithely allocating them. The only problem with that theory
> is that the initrd doesn't seem to be getting corrupted -- and if we
> were handing out its pages like that then surely _something_ would have
> scribbled on it before we tried to read it.
Yeah, I don't think it's necessarily initrd itself, I'd be more inclined
to think that the reason you see this change with the initrd unpacking is
simply that it does a lot of allocations for the initrd files, so I think
it is only indirectly involved - just because it ends up being a slab
user.
> When I head back in tomorrow morning I'll instrument free_initrd_mem()
> to check that the PageReserved bit was actually set on each page, before
> clearing it. And I'll make the page allocation routines check whether
> they're giving out pages between initrd_start and initrd_end, etc.
Sounds like a sane plan.
Linus
More information about the Linuxppc-dev
mailing list