Chasing some invalid accesses to .init zone, I found that free_init_pages() was properly freeing the pages but virtual was still usable. A poisoning (memset(page, 0xcc, PAGE_SIZE)) was done but this is not reliable. Applying this patch at least in mm is a good thing... (After that we could map non possible cpu percpu data to the initial percpudata that is included in .init and discarded in free_initmem()) Signed-off-by: Eric Dumazet