From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.osdl.org (smtp.osdl.org [65.172.181.24]) (using TLSv1 with cipher EDH-RSA-DES-CBC3-SHA (168/168 bits)) (Client CN "smtp.osdl.org", Issuer "OSDL Hostmaster" (not verified)) by ozlabs.org (Postfix) with ESMTP id 33631DDEE0 for ; Mon, 26 Feb 2007 15:13:48 +1100 (EST) Date: Sun, 25 Feb 2007 20:13:49 -0800 (PST) From: Linus Torvalds To: David Woodhouse Subject: Re: Make sure we populate the initroot filesystem late enough In-Reply-To: <1172462466.3971.46.camel@shinybook.infradead.org> Message-ID: References: <200612112059.kBBKx1j7022473@hera.kernel.org> <1172448057.3971.9.camel@shinybook.infradead.org> <1172452660.3971.33.camel@shinybook.infradead.org> <1172462466.3971.46.camel@shinybook.infradead.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Cc: linuxppc-dev@ozlabs.org, Linux Kernel Mailing List , john stultz List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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