Thread (29 messages) 29 messages, 8 authors, 2012-09-08

Re: Testing tracer wakeup_rt: .. no entries found ..FAILED!

From: Paul E. McKenney <hidden>
Date: 2012-08-01 00:18:45
Also in: lkml

On Tue, Jul 31, 2012 at 08:09:38PM -0400, Steven Rostedt wrote:
On Tue, 2012-07-31 at 16:57 -0700, Paul E. McKenney wrote:
quoted
quoted
What was the next lines? I bet you it was "PASSED". Which means it did
not fail. This is the second bug you found that has to do with RCU being
called in 'idle'. The one that Paul posted a patch for.
Though it needs another patch to actually use it in the right place...
Right. Something like this:
Looks good to me!

							Thanx, Paul
quoted hunk ↗ jump to hunk
-- Steve
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 5638104..d915638 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -631,7 +631,12 @@ __update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu)

 	memcpy(max_data->comm, tsk->comm, TASK_COMM_LEN);
 	max_data->pid = tsk->pid;
-	max_data->uid = task_uid(tsk);
+	/*
+	 * task_uid() calls rcu_read_lock, but this can be called
+	 * outside of RCU state monitoring (irq going back to idle).
+	 */ 
+	RCU_NONIDLE(max_data->uid = task_uid(tsk));
+
 	max_data->nice = tsk->static_prio - 20 - MAX_RT_PRIO;
 	max_data->policy = tsk->policy;
 	max_data->rt_priority = tsk->rt_priority;
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help