diff options
author | Salvatore Bonaccorso <carnil@debian.org> | 2021-05-27 21:28:51 +0200 |
---|---|---|
committer | Salvatore Bonaccorso <carnil@debian.org> | 2021-05-28 06:32:22 +0200 |
commit | 0b7d148240778d23cf634ba4f99737aa441aa4bb (patch) | |
tree | d3f11d0aefa31ace7c58a7655ba989b9879df288 | |
parent | 55b2fc2f32cb030d3e0e49ddf096b169f3664797 (diff) | |
download | kernel_replicant_linux-0b7d148240778d23cf634ba4f99737aa441aa4bb.tar.gz kernel_replicant_linux-0b7d148240778d23cf634ba4f99737aa441aa4bb.tar.bz2 kernel_replicant_linux-0b7d148240778d23cf634ba4f99737aa441aa4bb.zip |
[rt] Refresh "ptrace: fix ptrace vs tasklist_lock race"
-rw-r--r-- | debian/changelog | 1 | ||||
-rw-r--r-- | debian/patches-rt/0226-ptrace-fix-ptrace-vs-tasklist_lock-race.patch | 25 |
2 files changed, 9 insertions, 17 deletions
diff --git a/debian/changelog b/debian/changelog index 8b1559c109d6..ae3d5a33cdc2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -132,6 +132,7 @@ linux (5.10.40-1) UNRELEASED; urgency=medium * bpf: No need to simulate speculative domain for immediates (CVE-2021-33200) * [armhf] dts: sun8i: h3: orangepi-plus: Fix ethernet phy-mode (Closes: #988574) + * [rt] Refresh "ptrace: fix ptrace vs tasklist_lock race" -- Salvatore Bonaccorso <carnil@debian.org> Thu, 27 May 2021 14:24:21 +0200 diff --git a/debian/patches-rt/0226-ptrace-fix-ptrace-vs-tasklist_lock-race.patch b/debian/patches-rt/0226-ptrace-fix-ptrace-vs-tasklist_lock-race.patch index 4aab33c974d8..839518ddf277 100644 --- a/debian/patches-rt/0226-ptrace-fix-ptrace-vs-tasklist_lock-race.patch +++ b/debian/patches-rt/0226-ptrace-fix-ptrace-vs-tasklist_lock-race.patch @@ -30,11 +30,9 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> kernel/sched/core.c | 17 +++++++++++++-- 3 files changed, 68 insertions(+), 7 deletions(-) -diff --git a/include/linux/sched.h b/include/linux/sched.h -index 5e21035c7c1e..05d0d463f30b 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -112,12 +112,8 @@ struct io_uring_task; +@@ -112,12 +112,8 @@ __TASK_TRACED | EXIT_DEAD | EXIT_ZOMBIE | \ TASK_PARKED) @@ -47,7 +45,7 @@ index 5e21035c7c1e..05d0d463f30b 100644 #ifdef CONFIG_DEBUG_ATOMIC_SLEEP /* -@@ -1876,6 +1872,51 @@ static inline int test_tsk_need_resched(struct task_struct *tsk) +@@ -1876,6 +1872,51 @@ return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); } @@ -99,14 +97,12 @@ index 5e21035c7c1e..05d0d463f30b 100644 /* * cond_resched() and cond_resched_lock(): latency reduction via * explicit rescheduling in places that are safe. The return -diff --git a/kernel/ptrace.c b/kernel/ptrace.c -index 79de1294f8eb..0b81543c4050 100644 --- a/kernel/ptrace.c +++ b/kernel/ptrace.c -@@ -180,7 +180,14 @@ static bool ptrace_freeze_traced(struct task_struct *task) - +@@ -196,7 +196,14 @@ spin_lock_irq(&task->sighand->siglock); - if (task_is_traced(task) && !__fatal_signal_pending(task)) { + if (task_is_traced(task) && !looks_like_a_spurious_pid(task) && + !__fatal_signal_pending(task)) { - task->state = __TASK_TRACED; + unsigned long flags; + @@ -119,11 +115,9 @@ index 79de1294f8eb..0b81543c4050 100644 ret = true; } spin_unlock_irq(&task->sighand->siglock); -diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 3e6aaf6161f7..7fc1b5eefd3e 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -2571,6 +2571,18 @@ int migrate_swap(struct task_struct *cur, struct task_struct *p, +@@ -2571,6 +2571,18 @@ } #endif /* CONFIG_NUMA_BALANCING */ @@ -142,7 +136,7 @@ index 3e6aaf6161f7..7fc1b5eefd3e 100644 /* * wait_task_inactive - wait for a thread to unschedule. * -@@ -2615,7 +2627,7 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state) +@@ -2615,7 +2627,7 @@ * is actually now running somewhere else! */ while (task_running(rq, p)) { @@ -151,7 +145,7 @@ index 3e6aaf6161f7..7fc1b5eefd3e 100644 return 0; cpu_relax(); } -@@ -2630,7 +2642,8 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state) +@@ -2630,7 +2642,8 @@ running = task_running(rq, p); queued = task_on_rq_queued(p); ncsw = 0; @@ -161,6 +155,3 @@ index 3e6aaf6161f7..7fc1b5eefd3e 100644 ncsw = p->nvcsw | LONG_MIN; /* sets MSB */ task_rq_unlock(rq, p, &rf); --- -2.30.2 - |