svn commit: r226343 - head/sys/vm

Kostik Belousov kostikbel at gmail.com
Thu Oct 13 18:20:33 UTC 2011


On Thu, Oct 13, 2011 at 04:20:10PM +0000, Marcel Moolenaar wrote:
> Author: marcel
> Date: Thu Oct 13 16:20:10 2011
> New Revision: 226343
> URL: http://svn.freebsd.org/changeset/base/226343
> 
> Log:
>   In sys_obreak() and when compiling for amd64 or ia64, when the process
>   is ILP32 (i.e. i386) grant execute permissions by default. The JDK 1.4.x
>   depends on being able to execute from the heap on i386.
> 
> Modified:
>   head/sys/vm/vm_unix.c
> 
> Modified: head/sys/vm/vm_unix.c
> ==============================================================================
> --- head/sys/vm/vm_unix.c	Thu Oct 13 16:16:46 2011	(r226342)
> +++ head/sys/vm/vm_unix.c	Thu Oct 13 16:20:10 2011	(r226343)
> @@ -36,6 +36,8 @@
>   *	@(#)vm_unix.c	8.1 (Berkeley) 6/11/93
>   */
>  
> +#include "opt_compat.h"
> +
>  /*
>   * Traditional sbrk/grow interface to VM
>   */
> @@ -49,6 +51,7 @@ __FBSDID("$FreeBSD$");
>  #include <sys/proc.h>
>  #include <sys/racct.h>
>  #include <sys/resourcevar.h>
> +#include <sys/sysent.h>
>  #include <sys/sysproto.h>
>  #include <sys/systm.h>
>  
> @@ -75,7 +78,7 @@ sys_obreak(td, uap)
>  	struct vmspace *vm = td->td_proc->p_vmspace;
>  	vm_offset_t new, old, base;
>  	rlim_t datalim, vmemlim;
> -	int rv;
> +	int prot, rv;
>  	int error = 0;
>  	boolean_t do_map_wirefuture;
>  
> @@ -135,8 +138,15 @@ sys_obreak(td, uap)
>  		}
>  		PROC_UNLOCK(td->td_proc);
>  #endif
> +		prot = VM_PROT_RW;
> +#ifdef COMPAT_FREEBSD32
> +#if defined(__amd64__) || defined(__ia64__)
> +		if (SV_PROC_FLAG(td->td_proc, SV_ILP32))
> +			prot |= VM_PROT_EXECUTE;
> +#endif
> +#endif
>  		rv = vm_map_insert(&vm->vm_map, NULL, 0, old, new,
> -		    VM_PROT_RW, VM_PROT_ALL, 0);
> +		    prot, VM_PROT_ALL, 0);
>  		if (rv != KERN_SUCCESS) {
>  #ifdef RACCT
>  			PROC_LOCK(td->td_proc);
The two commits removed NX support for .data/.bss for 32bit binaries on amd64.
This is too unfortunate. Can we claim that only old binaries need this hack ?

If yes, could you, please, conditionalize the hack on curproc->p_osrel
being, say, 4.x ?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/svn-src-head/attachments/20111013/b9ca5af0/attachment.pgp


More information about the svn-src-head mailing list