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
[-- Attachment #1 --] 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 ? [-- Attachment #2 --] -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (FreeBSD) iEYEARECAAYFAk6XK+gACgkQC3+MBN1Mb4iR+gCePAhKnyEsWSbiOUzsOcsm66Cy P8EAoL0A40cus5B5TkizjrgU2CBk3ewr =fFqb -----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20111013182025.GK1511>
