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