linux-stable/init
Peter Zijlstra 669cea470c init, sched: Fix race between init and kthreadd
commit b433c3d454 upstream.

Ilya reported that on a very slow machine he could reliably
reproduce a race between forking init and kthreadd. We first
fork init so that it  obtains pid-1, however since the scheduler
is already fully running at this point it can preempt and run
the init thread before we spawn and set kthreadd_task.

The init thread can then attempt spawning kthreads without
kthreadd being present which results in an OOPS.

Reported-by: Ilya Loginov <isloginov@gmail.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
LKML-Reference: <1277736661.3561.110.camel@laptop>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
2012-03-14 10:57:48 -04:00
..
calibrate.c fix jiffy calculations in calibrate_delay_direct to handle overflow 2011-06-26 12:46:31 -04:00
do_mounts_initrd.c init: Open /dev/console from rootfs 2010-03-03 14:56:07 -05:00
do_mounts_md.c md: move lots of #include lines out of .h files and into .c 2009-03-31 14:33:13 +11:00
do_mounts_rd.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
do_mounts.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
do_mounts.h md: move lots of #include lines out of .h files and into .c 2009-03-31 14:33:13 +11:00
initramfs.c initramfs: handle unrecognised decompressor when unpacking 2010-04-24 11:31:26 -07:00
Kconfig slub: fix panic with DISCONTIGMEM 2012-03-14 10:57:26 -04:00
main.c init, sched: Fix race between init and kthreadd 2012-03-14 10:57:48 -04:00
Makefile kbuild: move compile.h to include/generated 2009-12-12 13:08:14 +01:00
noinitramfs.c [PATCH] disable init/initramfs.c 2007-02-11 10:51:25 -08:00
version.c kbuild: move utsrelease.h to include/generated 2009-12-12 13:08:15 +01:00