Call for testers: vfork(2) repair for Xen

Sean Bruno seanwbruno at gmail.com
Tue Dec 4 21:12:33 UTC 2012


On Tue, 2012-12-04 at 23:02 +0200, Konstantin Belousov wrote:
> Hi,
> there is plain erronous special case for Xen in the handling of vfork(2)
> syscall, which converts it into the fork(2), but only on Xen. I think this
> was a bug to commit the change in the course of importing Xen support at all.
> 
> Could somebody of you, who use paravirtualized kernels, test the patch
> below. After the patched kernel is booted, just running csh(1) and
> calling any external command from it, e.g. ls(1), is enough.
> 
> I already tried to solicit the testing of the fix in private, but nobody
> responded. I am going to commit the change in a week, unless somebody
> report a real issue with Xen pmap, uncovered by it.
> 
> diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c
> index b8a4825..0d2709f 100644
> --- a/sys/kern/kern_fork.c
> +++ b/sys/kern/kern_fork.c
> @@ -150,11 +150,7 @@ sys_vfork(struct thread *td, struct vfork_args *uap)
>  	int error, flags;
>  	struct proc *p2;
>  
> -#ifdef XEN
> -	flags = RFFDG | RFPROC; /* validate that this is still an issue */
> -#else
>  	flags = RFFDG | RFPROC | RFPPWAIT | RFMEM;
> -#endif		
>  	error = fork1(td, flags, 0, &p2, NULL, 0);
>  	if (error == 0) {
>  		td->td_retval[0] = p2->p_pid;


Ack.  Will test tonight after dom0.freebsd.org is restored.

Sean



More information about the freebsd-xen mailing list