On Tue, 2008-08-19 at 05:19 -0400, Gregory Haskins wrote:According to Steve, we are already in an interrupt-disabled section here, but I will defer to him. He suggested I try this over an IRC conversation when I noticed a strange wakeup trace, and it seems to have solved the problem.
Suggested by Steve Rostedt to fix an observed "+1" in the preempt-count
Signed-off-by: Gregory Haskins <ghaskins@xxxxxxxxxx>
---
kernel/trace/trace_sched_wakeup.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/kernel/trace/trace_sched_wakeup.c b/kernel/trace/trace_sched_wakeup.c
index c3a15bd..ae523fd 100644
--- a/kernel/trace/trace_sched_wakeup.c
+++ b/kernel/trace/trace_sched_wakeup.c
@@ -70,7 +70,9 @@ wakeup_tracer_call(unsigned long ip, unsigned long parent_ip)
if (task_cpu(wakeup_task) != cpu)
goto unlock;
+ preempt_enable_no_resched_notrace();
trace_function(tr, data, ip, parent_ip, flags);
+ preempt_disable_notrace();
Is preempt_count > 1 at all times here?
If not, it might drop to 0 and any interrupt might cause preemption -
and its not obvious to me that that is actually correct.
Attachment:
signature.asc
Description: OpenPGP digital signature