mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	torture: Wake up kthreads after storing task_struct pointer
Currently, _torture_create_kthread() uses kthread_run() to create torture-test kthreads, which means that the resulting task_struct pointer is stored after the newly created kthread has been marked runnable. This in turn can cause spurious failure of checks for code being run by a particular kthread. This commit therefore changes _torture_create_kthread() to use kthread_create(), then to do an explicit wake_up_process() after the task_struct pointer has been stored. Reported-by: Frederic Weisbecker <frederic@kernel.org> Reviewed-by: Neeraj Upadhyay <quic_neeraju@quicinc.com> Reviewed-by: Uladzislau Rezki (Sony) <urezki@gmail.com> Reviewed-by: Frederic Weisbecker <frederic@kernel.org> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
		
							parent
							
								
									89440d2dad
								
							
						
					
					
						commit
						6b8646a9d3
					
				
					 1 changed files with 3 additions and 1 deletions
				
			
		|  | @ -931,12 +931,14 @@ int _torture_create_kthread(int (*fn)(void *arg), void *arg, char *s, char *m, | |||
| 	int ret = 0; | ||||
| 
 | ||||
| 	VERBOSE_TOROUT_STRING(m); | ||||
| 	*tp = kthread_run(fn, arg, "%s", s); | ||||
| 	*tp = kthread_create(fn, arg, "%s", s); | ||||
| 	if (IS_ERR(*tp)) { | ||||
| 		ret = PTR_ERR(*tp); | ||||
| 		TOROUT_ERRSTRING(f); | ||||
| 		*tp = NULL; | ||||
| 		return ret; | ||||
| 	} | ||||
| 	wake_up_process(*tp);  // Process is sleeping, so ordering provided.
 | ||||
| 	torture_shuffle_task_register(*tp); | ||||
| 	return ret; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Paul E. McKenney
						Paul E. McKenney