linux/debian/patches-rt/0109-kernel-sched-move-stac...

71 lines
2.1 KiB
Diff
Raw Normal View History

2019-04-30 12:45:19 +00:00
From 5237487b97c59d69fbd880f60b8cc9ca5414a52a Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Mon, 21 Nov 2016 19:31:08 +0100
2019-05-29 19:49:30 +00:00
Subject: [PATCH 109/269] kernel/sched: move stack + kprobe clean up to
__put_task_struct()
2019-05-29 19:49:30 +00:00
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.37-rt20.tar.xz
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.
Cc: stable-rt@vger.kernel.org #for kprobe_flush_task()
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
2019-04-08 23:49:20 +00:00
kernel/fork.c | 10 ++++++++++
kernel/sched/core.c | 9 ---------
2 files changed, 10 insertions(+), 9 deletions(-)
2019-04-08 23:49:20 +00:00
diff --git a/kernel/fork.c b/kernel/fork.c
index 857ce1a7269f..8a9241afefb0 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -40,6 +40,7 @@
#include <linux/hmm.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>
2019-04-08 23:49:20 +00:00
@@ -693,6 +694,15 @@ void __put_task_struct(struct task_struct *tsk)
WARN_ON(atomic_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);
+
cgroup_free(tsk);
task_numa_free(tsk);
security_task_free(tsk);
2019-04-08 23:49:20 +00:00
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
2019-04-30 12:45:19 +00:00
index 551ce1adea4a..788947117ed2 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
2019-04-30 12:45:19 +00:00
@@ -2741,15 +2741,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(prev);
}
2019-04-08 23:49:20 +00:00
--
2.20.1