summaryrefslogtreecommitdiffstats
path: root/kernel/signal.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2014-07-16 13:49:15 +0200
committerIngo Molnar <mingo@kernel.org>2014-07-17 11:34:01 +0200
commit01c9db827146ce321562a992a5dbc1a49b1a99ce (patch)
tree2014c68991343e5b7ddf0408c2527ff08038e08d /kernel/signal.c
parent1795cd9b3a91d4b5473c97f491d63892442212ab (diff)
parent187497fa5e9e9383820d33e48b87f8200a747c2a (diff)
downloadlinux-01c9db827146ce321562a992a5dbc1a49b1a99ce.tar.bz2
Merge branch 'rcu/next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu
Pull RCU updates from Paul E. McKenney: * Update RCU documentation. * Miscellaneous fixes. * Maintainership changes. * Torture-test updates. * Callback-offloading changes. Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/signal.c')
-rw-r--r--kernel/signal.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/signal.c b/kernel/signal.c
index a4077e90f19f..40b76e351e64 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -1263,6 +1263,10 @@ struct sighand_struct *__lock_task_sighand(struct task_struct *tsk,
struct sighand_struct *sighand;
for (;;) {
+ /*
+ * Disable interrupts early to avoid deadlocks.
+ * See rcu_read_unlock() comment header for details.
+ */
local_irq_save(*flags);
rcu_read_lock();
sighand = rcu_dereference(tsk->sighand);