Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 04 Dec 2012 13:12:30 -0800
From:      Sean Bruno <seanwbruno@gmail.com>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        xen@freebsd.org
Subject:   Re: Call for testers: vfork(2) repair for Xen
Message-ID:  <1354655550.2302.9.camel@powernoodle.corp.yahoo.com>
In-Reply-To: <20121204210255.GS3013@kib.kiev.ua>
References:  <20121204210255.GS3013@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1354655550.2302.9.camel>