From owner-freebsd-emulation@FreeBSD.ORG Mon Nov 5 09:51:15 2007 Return-Path: Delivered-To: freebsd-emulation@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B320116A417; Mon, 5 Nov 2007 09:51:15 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from gnome.kiev.sovam.com (gnome.kiev.sovam.com [212.109.32.24]) by mx1.freebsd.org (Postfix) with ESMTP id 2A2F713C4B3; Mon, 5 Nov 2007 09:51:15 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from relay02.kiev.sovam.com ([62.64.120.197]) by gnome.kiev.sovam.com with esmtp (Exim 4.67 (FreeBSD)) (envelope-from ) id 1Ioybm-00042O-DD; Mon, 05 Nov 2007 11:51:02 +0200 Received: from [212.82.216.226] (helo=deviant.kiev.zoral.com.ua) by relay02.kiev.sovam.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.67) (envelope-from ) id 1Ioybi-0000Er-Li; Mon, 05 Nov 2007 11:51:00 +0200 Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.1/8.14.1) with ESMTP id lA59oswM013788; Mon, 5 Nov 2007 11:50:54 +0200 (EET) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.1/8.14.1/Submit) id lA59orVi013787; Mon, 5 Nov 2007 11:50:54 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 5 Nov 2007 11:50:53 +0200 From: Kostik Belousov To: "Valery V.Chikalov" Message-ID: <20071105095053.GP37471@deviant.kiev.zoral.com.ua> References: <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> <20071104171423.GL37471@deviant.kiev.zoral.com.ua> <472E067A.5050601@chikalov.dp.ua> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="1Morrmav4zT5FEml" Content-Disposition: inline In-Reply-To: <472E067A.5050601@chikalov.dp.ua> User-Agent: Mutt/1.4.2.3i X-Scanner-Signature: eacc24c597fa83a26e5f02f00d1ff66c X-DrWeb-checked: yes X-SpamTest-Envelope-From: kostikbel@gmail.com X-SpamTest-Group-ID: 00000000 X-SpamTest-Info: Profiles 1735 [Nov 04 2007] X-SpamTest-Info: helo_type=3 X-SpamTest-Info: {received from trusted relay: not dialup} X-SpamTest-Method: none X-SpamTest-Method: Local Lists X-SpamTest-Rate: 0 X-SpamTest-Status: Not detected X-SpamTest-Status-Extended: not_detected X-SpamTest-Version: SMTP-Filter Version 3.0.0 [0255], KAS30/Release Cc: freebsd-emulation@freebsd.org Subject: Re: Linux emulation on FreeBSD AMD64 X-BeenThere: freebsd-emulation@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Development of Emulators of other operating systems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Nov 2007 09:51:15 -0000 --1Morrmav4zT5FEml Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sun, Nov 04, 2007 at 07:50:50PM +0200, Valery V.Chikalov wrote: > Kostik Belousov wrote: > [...] > >>> > >>>This are only addresses which are arguments for linux_mprotect. > >>>I have suspected linux_mmap_common but it not called either. > >>the protection can be set from mmap(), can you see if there is a mmap= =20 > >>call 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 th= at > >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. >=20 > Yes, you are right. >=20 > This issue was resolved already due to kindly help of rdivacky@. > I just tried to know little more before posting the results. > That is proposed by him patch: >=20 > Index: vmparam.h > =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 > RCS file: /home/ncvs/src/sys/amd64/include/vmparam.h,v > retrieving revision 1.49 > diff -u -r1.49 vmparam.h > --- vmparam.h 25 Sep 2007 06:25:04 -0000 1.49 > +++ vmparam.h 4 Nov 2007 14:43:39 -0000 > @@ -45,6 +45,10 @@ > #ifndef _MACHINE_VMPARAM_H_ > #define _MACHINE_VMPARAM_H_ 1 >=20 > +#ifdef COMPAT_IA32 > +#define VM_PROT_READ_IS_EXEC /* if you can read -- then you can exec = */ > +#endif > + No, this is wrong fix. It changes the ABI for freebsd binaries, and does this not only for SysV shm, but for any readable mapping. Instead, the following things shall be made: 1. linux_shmat() shall call kern_shmat(). 2. kern_shmat() shall take the flag that would force the read mapping to be also executable. 3. this flag shall be set when kern_shmat() is called from linux_shmat(), and not set when called from shmat(). --1Morrmav4zT5FEml Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (FreeBSD) iD8DBQFHLud4C3+MBN1Mb4gRAoJdAJ9seBWt3+O5RyMTW/ClnQUEDRG9SACeOmsW z0usavNk8GdxjOOX6iuSskI= =ryN9 -----END PGP SIGNATURE----- --1Morrmav4zT5FEml--