mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-03 18:20:25 +02:00 
			
		
		
		
	fork: remove do_fork()
Now that all architectures have been switched to use _do_fork() and the new struct kernel_clone_args calling convention we can remove the legacy do_fork() helper completely. The calling convention used to be brittle and do_fork() didn't buy us anything. The only calling convention accepted should be based on struct kernel_clone_args going forward. It's cleaner and uniform. Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@kernel.org> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org> Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org> Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
		
							parent
							
								
									adc7092e4c
								
							
						
					
					
						commit
						ff2a91127b
					
				
					 2 changed files with 1 additions and 25 deletions
				
			
		| 
						 | 
				
			
			@ -96,7 +96,6 @@ extern void exit_files(struct task_struct *);
 | 
			
		|||
extern void exit_itimers(struct signal_struct *);
 | 
			
		||||
 | 
			
		||||
extern long _do_fork(struct kernel_clone_args *kargs);
 | 
			
		||||
extern long do_fork(unsigned long, unsigned long, unsigned long, int __user *, int __user *);
 | 
			
		||||
struct task_struct *fork_idle(int);
 | 
			
		||||
struct mm_struct *copy_init_mm(void);
 | 
			
		||||
extern pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2493,29 +2493,6 @@ long _do_fork(struct kernel_clone_args *args)
 | 
			
		|||
	return nr;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifndef CONFIG_HAVE_COPY_THREAD_TLS
 | 
			
		||||
/* For compatibility with architectures that call do_fork directly rather than
 | 
			
		||||
 * using the syscall entry points below. */
 | 
			
		||||
long do_fork(unsigned long clone_flags,
 | 
			
		||||
	      unsigned long stack_start,
 | 
			
		||||
	      unsigned long stack_size,
 | 
			
		||||
	      int __user *parent_tidptr,
 | 
			
		||||
	      int __user *child_tidptr)
 | 
			
		||||
{
 | 
			
		||||
	struct kernel_clone_args args = {
 | 
			
		||||
		.flags		= (lower_32_bits(clone_flags) & ~CSIGNAL),
 | 
			
		||||
		.pidfd		= parent_tidptr,
 | 
			
		||||
		.child_tid	= child_tidptr,
 | 
			
		||||
		.parent_tid	= parent_tidptr,
 | 
			
		||||
		.exit_signal	= (lower_32_bits(clone_flags) & CSIGNAL),
 | 
			
		||||
		.stack		= stack_start,
 | 
			
		||||
		.stack_size	= stack_size,
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	return _do_fork(&args);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Create a kernel thread.
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -2923,7 +2900,7 @@ static int unshare_fd(unsigned long unshare_flags, struct files_struct **new_fdp
 | 
			
		|||
/*
 | 
			
		||||
 * unshare allows a process to 'unshare' part of the process
 | 
			
		||||
 * context which was originally shared using clone.  copy_*
 | 
			
		||||
 * functions used by do_fork() cannot be used here directly
 | 
			
		||||
 * functions used by _do_fork() cannot be used here directly
 | 
			
		||||
 * because they modify an inactive task_struct that is being
 | 
			
		||||
 * constructed. Here we are modifying the current, active,
 | 
			
		||||
 * task_struct.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue