Date: Sun, 4 Nov 2007 19:14:23 +0200 From: Kostik Belousov <kostikbel@gmail.com> To: Roman Divacky <rdivacky@freebsd.org> Cc: freebsd-emulation@freebsd.org Subject: Re: Linux emulation on FreeBSD AMD64 Message-ID: <20071104171423.GL37471@deviant.kiev.zoral.com.ua> In-Reply-To: <20071104133518.GA7275@freebsd.org> References: <4723A8D6.6020002@chikalov.dp.ua> <20071031180639.GA93259@cons.org> <47298F10.4050301@chikalov.dp.ua> <20071101152550.GA10868@cons.org> <472B0454.9040408@chikalov.dp.ua> <472B9CD1.1010607@chikalov.dp.ua> <472DAF60.9040008@chikalov.dp.ua> <20071104122023.GA5528@freebsd.org> <472DC7C3.3090105@chikalov.dp.ua> <20071104133518.GA7275@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--J2dKNoLeXnWu5vox Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sun, Nov 04, 2007 at 02:35:18PM +0100, Roman Divacky wrote: > On Sun, Nov 04, 2007 at 03:23:15PM +0200, Valery V.Chikalov wrote: > > Roman Divacky ??????????: > > >=20 > > > I am a little confused.. you are saying that > > >=20 > > > 1) oracle calls m* on 0x50000000 with PROT_EXEC but fbsd does not set= it on the map > > >=20 > > > or > > >=20 > > > 2) oracle does not set this protection at all and the OS is supposed = to have set on default? > > >=20 > > > roman > >=20 > >=20 > > rather 3) I cant find function which oracle calls to manage memory at > > 0x50000000, this is why I ask for help. > > I can only state that linux_mprotect dont called with addr at 0x5000000= 0. > >=20 > > Nov 4 12:40:14 tiger kernel: mprotect: addr:55c00000, len:4096, prot:1, > > bsdprot:5, ret:0 > > Nov 4 12:40:14 tiger kernel: mprotect: addr:55c81000, len:4096, prot:1, > > bsdprot:5, ret:0 > >=20 > > This are only addresses which are arguments for linux_mprotect. > > I have suspected linux_mmap_common but it not called either. >=20 > the protection can be set from mmap(), can you see if there is a mmap cal= l with 0x50....0 ? SysV shm is mapped by the shmat(2) syscall. linux compat implementation, linux_shmat(), calls shmat() (this shall be fixed to use kern_shmat). Look for the VM_PROT_READ_IS_EXEC in the sys/kern/sysv_shm.c. I think that would explain both reason for the fault and missing mmap() calls. It should be fixed by acting as if VM_PROT_READ_IS_EXEC is enabled if kern_shmat() is called from linux_shmat(). This might cause some problems when shared segment is being attached both by freebsd and linux processes. --J2dKNoLeXnWu5vox Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (FreeBSD) iD8DBQFHLf3vC3+MBN1Mb4gRAtkBAKDdtL36aNbwvVXbSb3G+3euvnb9GgCdE87X tLkLpBjjy71H528QUeLu/fQ= =kp85 -----END PGP SIGNATURE----- --J2dKNoLeXnWu5vox--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20071104171423.GL37471>