Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 13 Oct 2011 21:20:25 +0300
From:      Kostik Belousov <kostikbel@gmail.com>
To:        Marcel Moolenaar <marcel@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r226343 - head/sys/vm
Message-ID:  <20111013182025.GK1511@deviant.kiev.zoral.com.ua>
In-Reply-To: <201110131620.p9DGKAM2022926@svn.freebsd.org>
References:  <201110131620.p9DGKAM2022926@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--ywvyGaV92PjvegkV
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

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
>=20
> 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.
>=20
> Modified:
>   head/sys/vm/vm_unix.c
>=20
> Modified: head/sys/vm/vm_unix.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- 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
>   */
> =20
> +#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>
> =20
> @@ -75,7 +78,7 @@ sys_obreak(td, uap)
>  	struct vmspace *vm =3D td->td_proc->p_vmspace;
>  	vm_offset_t new, old, base;
>  	rlim_t datalim, vmemlim;
> -	int rv;
> +	int prot, rv;
>  	int error =3D 0;
>  	boolean_t do_map_wirefuture;
> =20
> @@ -135,8 +138,15 @@ sys_obreak(td, uap)
>  		}
>  		PROC_UNLOCK(td->td_proc);
>  #endif
> +		prot =3D VM_PROT_RW;
> +#ifdef COMPAT_FREEBSD32
> +#if defined(__amd64__) || defined(__ia64__)
> +		if (SV_PROC_FLAG(td->td_proc, SV_ILP32))
> +			prot |=3D VM_PROT_EXECUTE;
> +#endif
> +#endif
>  		rv =3D vm_map_insert(&vm->vm_map, NULL, 0, old, new,
> -		    VM_PROT_RW, VM_PROT_ALL, 0);
> +		    prot, VM_PROT_ALL, 0);
>  		if (rv !=3D KERN_SUCCESS) {
>  #ifdef RACCT
>  			PROC_LOCK(td->td_proc);
The two commits removed NX support for .data/.bss for 32bit binaries on amd=
64.
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 ?

--ywvyGaV92PjvegkV
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (FreeBSD)

iEYEARECAAYFAk6XK+gACgkQC3+MBN1Mb4iR+gCePAhKnyEsWSbiOUzsOcsm66Cy
P8EAoL0A40cus5B5TkizjrgU2CBk3ewr
=fFqb
-----END PGP SIGNATURE-----

--ywvyGaV92PjvegkV--



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