aboutsummaryrefslogtreecommitdiffstats
path: root/features/rt/kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch
diff options
context:
space:
mode:
Diffstat (limited to 'features/rt/kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch')
-rw-r--r--features/rt/kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch80
1 files changed, 0 insertions, 80 deletions
diff --git a/features/rt/kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch b/features/rt/kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch
deleted file mode 100644
index 085edde5..00000000
--- a/features/rt/kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From cb9ddd5eec36831a80572aa3d33be62eff791e74 Mon Sep 17 00:00:00 2001
-From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-Date: Mon, 21 Nov 2016 19:31:08 +0100
-Subject: [PATCH 121/191] kernel/sched: move stack + kprobe clean up to
- __put_task_struct()
-
-There is no need to free the stack before the task struct (except for reasons
-mentioned in commit 68f24b08ee89 ("sched/core: Free the stack early if
-CONFIG_THREAD_INFO_IN_TASK")). This also comes handy on -RT because we can't
-free memory in preempt disabled region.
-vfree_atomic() delays the memory cleanup to a worker. Since we move everything
-to the RCU callback, we can also free it immediately.
-
-Cc: stable-rt@vger.kernel.org #for kprobe_flush_task()
-Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
----
- kernel/fork.c | 12 +++++++++++-
- kernel/sched/core.c | 9 ---------
- 2 files changed, 11 insertions(+), 10 deletions(-)
-
-diff --git a/kernel/fork.c b/kernel/fork.c
-index da1b307cbf73..5fdb0a1bbad8 100644
---- a/kernel/fork.c
-+++ b/kernel/fork.c
-@@ -42,6 +42,7 @@
- #include <linux/mmu_notifier.h>
- #include <linux/fs.h>
- #include <linux/mm.h>
-+#include <linux/kprobes.h>
- #include <linux/vmacache.h>
- #include <linux/nsproxy.h>
- #include <linux/capability.h>
-@@ -288,7 +289,7 @@ static inline void free_thread_stack(struct task_struct *tsk)
- return;
- }
-
-- vfree_atomic(tsk->stack);
-+ vfree(tsk->stack);
- return;
- }
- #endif
-@@ -743,6 +744,15 @@ void __put_task_struct(struct task_struct *tsk)
- WARN_ON(refcount_read(&tsk->usage));
- WARN_ON(tsk == current);
-
-+ /*
-+ * Remove function-return probe instances associated with this
-+ * task and put them back on the free list.
-+ */
-+ kprobe_flush_task(tsk);
-+
-+ /* Task is done with its stack. */
-+ put_task_stack(tsk);
-+
- io_uring_free(tsk);
- cgroup_free(tsk);
- task_numa_free(tsk, true);
-diff --git a/kernel/sched/core.c b/kernel/sched/core.c
-index 9ec24e4188f4..2069022bdce5 100644
---- a/kernel/sched/core.c
-+++ b/kernel/sched/core.c
-@@ -4282,15 +4282,6 @@ static struct rq *finish_task_switch(struct task_struct *prev)
- if (prev->sched_class->task_dead)
- prev->sched_class->task_dead(prev);
-
-- /*
-- * Remove function-return probe instances associated with this
-- * task and put them back on the free list.
-- */
-- kprobe_flush_task(prev);
--
-- /* Task is done with its stack. */
-- put_task_stack(prev);
--
- put_task_struct_rcu_user(prev);
- }
-
---
-2.19.1
-