diff options
Diffstat (limited to 'kernel/signal.c')
-rw-r--r-- | kernel/signal.c | 4 |
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, | |||
1263 | struct sighand_struct *sighand; | 1263 | struct sighand_struct *sighand; |
1264 | 1264 | ||
1265 | for (;;) { | 1265 | for (;;) { |
1266 | /* | ||
1267 | * Disable interrupts early to avoid deadlocks. | ||
1268 | * See rcu_read_unlock() comment header for details. | ||
1269 | */ | ||
1266 | local_irq_save(*flags); | 1270 | local_irq_save(*flags); |
1267 | rcu_read_lock(); | 1271 | rcu_read_lock(); |
1268 | sighand = rcu_dereference(tsk->sighand); | 1272 | sighand = rcu_dereference(tsk->sighand); |