diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2016-05-02 11:58:56 -0700 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2016-06-15 15:45:00 -0700 |
commit | 4929c913bda505dbe44bb42c00da06011fee6c9d (patch) | |
tree | aa11d64d780bba090f5e964308ab88c397340754 /include | |
parent | 570dd3c7424179b831decb655ea9dd1ecea38adc (diff) | |
download | linux-4929c913bda505dbe44bb42c00da06011fee6c9d.tar.gz linux-4929c913bda505dbe44bb42c00da06011fee6c9d.tar.bz2 linux-4929c913bda505dbe44bb42c00da06011fee6c9d.zip |
rcu: Make call_rcu_tasks() tolerate first call with irqs disabled
Currently, if the very first call to call_rcu_tasks() has irqs disabled,
it will create the rcu_tasks_kthread with irqs disabled, which will
result in a splat in the memory allocator, which kthread_run() invokes
with the expectation that irqs are enabled.
This commit fixes this problem by deferring kthread creation if called
with irqs disabled. The first call to call_rcu_tasks() that has irqs
enabled will create the kthread.
This bug was detected by rcutorture changes that were motivated by
Iftekhar Ahmed's mutation-testing efforts.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/rcupdate.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index a8af79738a0e..3bc5de08c0b7 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h @@ -45,6 +45,7 @@ #include <linux/bug.h> #include <linux/compiler.h> #include <linux/ktime.h> +#include <linux/irqflags.h> #include <asm/barrier.h> |