]> git.karo-electronics.de Git - karo-tx-linux.git/commit
rcu: Prevent initialization race in rcutorture kthreads
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sat, 25 Aug 2012 22:27:40 +0000 (15:27 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 5 Sep 2012 00:00:41 +0000 (17:00 -0700)
commita1551aca2d7084560240df769cf0eec5b7a4ced3
tree266b8cdc15f81534ad0e127fe047d071093f6888
parent7126e41ca400b8fbe8602297eaf1083bc6938755
rcu: Prevent initialization race in rcutorture kthreads

When you do something like "t = kthread_run(...)", it is possible that
the kthread will start running before the assignment to "t" happens.
If the child kthread expects to find a pointer to its task_struct in "t",
it will then be fatally disappointed.  This commit therefore switches
such cases to kthread_create() followed by wake_up_process(), guaranteeing
that the assignment happens before the child kthread starts running.

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcutorture.c