From 6778948f9de86c3cfaf36725a7c87dcff9ba247f Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 11 Dec 2023 08:20:59 +0000 Subject: [PATCH] kernel_5.10 no rt --- kernel/kernel/ptrace.c | 32 +++++++++----------------------- 1 files changed, 9 insertions(+), 23 deletions(-) diff --git a/kernel/kernel/ptrace.c b/kernel/kernel/ptrace.c index fb5d1a1..aab480e 100644 --- a/kernel/kernel/ptrace.c +++ b/kernel/kernel/ptrace.c @@ -196,14 +196,7 @@ spin_lock_irq(&task->sighand->siglock); if (task_is_traced(task) && !looks_like_a_spurious_pid(task) && !__fatal_signal_pending(task)) { - unsigned long flags; - - raw_spin_lock_irqsave(&task->pi_lock, flags); - if (task->state & __TASK_TRACED) - task->state = __TASK_TRACED; - else - task->saved_state = __TASK_TRACED; - raw_spin_unlock_irqrestore(&task->pi_lock, flags); + task->state = __TASK_TRACED; ret = true; } spin_unlock_irq(&task->sighand->siglock); @@ -213,8 +206,8 @@ static void ptrace_unfreeze_traced(struct task_struct *task) { - unsigned long flags; - bool frozen = true; + if (task->state != __TASK_TRACED) + return; WARN_ON(!task->ptrace || task->parent != current); @@ -223,19 +216,12 @@ * Recheck state under the lock to close this race. */ spin_lock_irq(&task->sighand->siglock); - - raw_spin_lock_irqsave(&task->pi_lock, flags); - if (task->state == __TASK_TRACED) - task->state = TASK_TRACED; - else if (task->saved_state == __TASK_TRACED) - task->saved_state = TASK_TRACED; - else - frozen = false; - raw_spin_unlock_irqrestore(&task->pi_lock, flags); - - if (frozen && __fatal_signal_pending(task)) - wake_up_state(task, __TASK_TRACED); - + if (task->state == __TASK_TRACED) { + if (__fatal_signal_pending(task)) + wake_up_state(task, __TASK_TRACED); + else + task->state = TASK_TRACED; + } spin_unlock_irq(&task->sighand->siglock); } -- Gitblit v1.6.2