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>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --] 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 ??????????: > > > > > > I am a little confused.. you are saying that > > > > > > 1) oracle calls m* on 0x50000000 with PROT_EXEC but fbsd does not set it on the map > > > > > > or > > > > > > 2) oracle does not set this protection at all and the OS is supposed to have set on default? > > > > > > roman > > > > > > 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 0x50000000. > > > > 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 > > > > 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 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 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. [-- Attachment #2 --] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (FreeBSD) iD8DBQFHLf3vC3+MBN1Mb4gRAtkBAKDdtL36aNbwvVXbSb3G+3euvnb9GgCdE87X tLkLpBjjy71H528QUeLu/fQ= =kp85 -----END PGP SIGNATURE-----help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20071104171423.GL37471>
