diff options
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.patch | 80 |
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 - |