Indeed I can reproduce it easily. With a few printk's this shows that alloc_percpu() returns a wrong address which is the cause of all of this: logs: Memory: 1011444k/1048564k available (11622k kernel code, 452k absent, 36668k reserved, 6270k data, 1028k init) alloc_kmem_cache_cpus kmem_cache_node = ffff88003ffcf000 alloc_kmem_cache_cpus kmem_cache = ffff88003ffcf020 This means that the cpu_slab is not a percpu pointer. Now the first allocation attempt: Slab kmem_cache cpu_slab=ffff88003ffcf020 freelist=ffff88003f8020c0 BUG: unable to handle kernel paging request at ffff87ffc1fdc020 IP: [<ffffffff812c3852>] this_cpu_cmpxchg16b_emu+0x2/0x1c Tejun: Whats going on there? I should be getting offsets into the per cpu area and not kernel addresses. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>