Messages in this thread | | | Date | Thu, 19 Jan 2012 14:00:58 +0000 | From | Catalin Marinas <> | Subject | Re: [Problem] kernel hangs at boot (bisected 892d208bcf) |
| |
On Thu, Jan 19, 2012 at 12:16:56PM +0000, Dirk Gouders wrote: > Catalin Marinas <catalin.marinas@arm.com> writes: > > On Wed, Jan 18, 2012 at 07:32:59PM +0000, Dirk Gouders wrote: > >> Freeing unused kernel memory: 608k freed > >> kernel tried to execute NX-protected page - exploit attempt? (uid: 0) > >> BUG: unable to handle kernel paging request at ffffffff818b232b > >> IP: [<ffffffff818b232b>] kmemleak_late_init+0x8a/0x8a ... > >> Code: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc <cc> cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc > >> RIP [<ffffffff818b232b>] kmemleak_late_init+0x8a/0x8a > > > > I don't really see how kmemleak could cause such error (or any of the > > recent changes I have made). It looks like some of the code in the > > .init.text section is not executable.
Ah, the interesting part - 0xcc is the poison value for freed initmem. And from the kernel logs you posted Linux frees the initmem and later calls kmemleak_late_init() which should have been in the .init.text section.
The kmemleak_late_init() function is defined as:
static int __init kmemleak_late_init(void) { ... } late_initcall(kmemleak_late_init);
and it must *not* be called after the initmem has been freed. Was there any change in the x86 or generic code with regards to the freeing of the init memory?
-- Catalin
| |