mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 00:28:52 +02:00 
			
		
		
		
	hung_task: allow hung_task_panic when hung_task_warnings is 0
Previously hung_task_panic would not be respected if enabled after hung_task_warnings had already been decremented to 0. Permit the kernel to panic if hung_task_panic is enabled after hung_task_warnings has already been decremented to 0 and another task hangs for hung_task_timeout_secs seconds. Check if hung_task_panic is enabled so we don't return prematurely, and check if hung_task_warnings is non-zero so we don't print the warning unnecessarily. [akpm@linux-foundation.org: fix off-by-one] Link: http://lkml.kernel.org/r/1473450214-4049-1-git-send-email-jsiddle@redhat.com Signed-off-by: John Siddle <jsiddle@redhat.com> Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									e154ccc831
								
							
						
					
					
						commit
						48a6d64eda
					
				
					 1 changed files with 14 additions and 14 deletions
				
			
		|  | @ -98,26 +98,26 @@ static void check_hung_task(struct task_struct *t, unsigned long timeout) | ||||||
| 
 | 
 | ||||||
| 	trace_sched_process_hang(t); | 	trace_sched_process_hang(t); | ||||||
| 
 | 
 | ||||||
| 	if (!sysctl_hung_task_warnings) | 	if (!sysctl_hung_task_warnings && !sysctl_hung_task_panic) | ||||||
| 		return; | 		return; | ||||||
| 
 | 
 | ||||||
| 	if (sysctl_hung_task_warnings > 0) |  | ||||||
| 		sysctl_hung_task_warnings--; |  | ||||||
| 
 |  | ||||||
| 	/*
 | 	/*
 | ||||||
| 	 * Ok, the task did not get scheduled for more than 2 minutes, | 	 * Ok, the task did not get scheduled for more than 2 minutes, | ||||||
| 	 * complain: | 	 * complain: | ||||||
| 	 */ | 	 */ | ||||||
| 	pr_err("INFO: task %s:%d blocked for more than %ld seconds.\n", | 	if (sysctl_hung_task_warnings) { | ||||||
| 		t->comm, t->pid, timeout); | 		sysctl_hung_task_warnings--; | ||||||
| 	pr_err("      %s %s %.*s\n", | 		pr_err("INFO: task %s:%d blocked for more than %ld seconds.\n", | ||||||
| 		print_tainted(), init_utsname()->release, | 			t->comm, t->pid, timeout); | ||||||
| 		(int)strcspn(init_utsname()->version, " "), | 		pr_err("      %s %s %.*s\n", | ||||||
| 		init_utsname()->version); | 			print_tainted(), init_utsname()->release, | ||||||
| 	pr_err("\"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\"" | 			(int)strcspn(init_utsname()->version, " "), | ||||||
| 		" disables this message.\n"); | 			init_utsname()->version); | ||||||
| 	sched_show_task(t); | 		pr_err("\"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\"" | ||||||
| 	debug_show_all_locks(); | 			" disables this message.\n"); | ||||||
|  | 		sched_show_task(t); | ||||||
|  | 		debug_show_all_locks(); | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	touch_nmi_watchdog(); | 	touch_nmi_watchdog(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 John Siddle
						John Siddle