[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <4A8A5FF5.8080609@cn.fujitsu.com>
Date: Tue, 18 Aug 2009 16:01:57 +0800
From: Lai Jiangshan <laijs@...fujitsu.com>
To: Ingo Molnar <mingo@...e.hu>, Steven Rostedt <rostedt@...dmis.org>,
Frederic Weisbecker <fweisbec@...il.com>,
LKML <linux-kernel@...r.kernel.org>
Subject: [PATCH] tracing, sched: mark preempt_schedule() notrace
Current preempt_schedule() is not marked notrace. It may be
infinite recursion in __trace_graph_return().
preempt_schedule()
__trace_graph_return()
ftrace_preempt_disable() (!!return false!!)
ftrace_preempt_enable()
preempt_enable_notrace()
preempt_schedule() (need_resched() may be true again)
It hardly happens, but marking preempt_schedule() notrace
makes it safer.
One interesting thing is that preempt_schedule() is in
the blacklist of kprobe subsystem. "__kprobes" implies "notrace".
But preempt_schedule() cannot be marked __kprobes for it
has been marked __sched. It is in the blacklist makes me
consider this: should it be marked "notrace" -- YES.
Signed-off-by: Lai Jiangshan <laijs@...fujitsu.com>
---
diff --git a/kernel/sched.c b/kernel/sched.c
index 5184580..2e9e209 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -5534,7 +5534,7 @@ out:
* off of preempt_enable. Kernel preemptions off return from interrupt
* occur there and call schedule directly.
*/
-asmlinkage void __sched preempt_schedule(void)
+asmlinkage void __sched notrace preempt_schedule(void)
{
struct thread_info *ti = current_thread_info();
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists