1 From 24a4176c16eb260d7caf5e18bbff4db3c9ba1914 Mon Sep 17 00:00:00 2001
2 From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
3 Date: Wed, 13 Jan 2016 14:09:05 +0100
4 Subject: [PATCH 262/366] ptrace: don't open IRQs in ptrace_freeze_traced() too
7 In the non-RT case the spin_lock_irq() here disables interrupts as well
8 as raw_spin_lock_irq(). So in the unlock case the interrupts are enabled
11 Reported-by: kernel test robot <ying.huang@linux.intel.com>
12 Cc: stable-rt@vger.kernel.org
13 Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
15 kernel/ptrace.c | 6 ++++--
16 1 file changed, 4 insertions(+), 2 deletions(-)
18 diff --git a/kernel/ptrace.c b/kernel/ptrace.c
19 index b852051..1004af7 100644
22 @@ -129,12 +129,14 @@ static bool ptrace_freeze_traced(struct task_struct *task)
24 spin_lock_irq(&task->sighand->siglock);
25 if (task_is_traced(task) && !__fatal_signal_pending(task)) {
26 - raw_spin_lock_irq(&task->pi_lock);
27 + unsigned long flags;
29 + raw_spin_lock_irqsave(&task->pi_lock, flags);
30 if (task->state & __TASK_TRACED)
31 task->state = __TASK_TRACED;
33 task->saved_state = __TASK_TRACED;
34 - raw_spin_unlock_irq(&task->pi_lock);
35 + raw_spin_unlock_irqrestore(&task->pi_lock, flags);
38 spin_unlock_irq(&task->sighand->siglock);