tracing: Robustify wait loop
The pending nested sleep debugging triggered on the potential stale TASK_INTERRUPTIBLE in this code. While there, fix the loop such that we won't revert to a while(1) yield() 'spin' loop if we ever get a spurious wakeup. And fix the actual issue by properly terminating the 'wait' loop by setting TASK_RUNNING. Link: http://lkml.kernel.org/p/20141008165110.GA14547@worktop.programming.kicks-ass.net Reported-by: Fengguang Wu <fengguang.wu@intel.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
		
					parent
					
						
							
								bfe01a5ba2
							
						
					
				
			
			
				commit
				
					
						fe0e01c77d
					
				
			
		
					 1 changed files with 4 additions and 1 deletions
				
			
		|  | @ -2513,8 +2513,11 @@ static __init int event_test_thread(void *unused) | |||
| 	kfree(test_malloc); | ||||
| 
 | ||||
| 	set_current_state(TASK_INTERRUPTIBLE); | ||||
| 	while (!kthread_should_stop()) | ||||
| 	while (!kthread_should_stop()) { | ||||
| 		schedule(); | ||||
| 		set_current_state(TASK_INTERRUPTIBLE); | ||||
| 	} | ||||
| 	__set_current_state(TASK_RUNNING); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Peter Zijlstra
				Peter Zijlstra