Skip site navigation (1)Skip section navigation (2)
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>