From owner-cvs-all@FreeBSD.ORG Tue Feb 1 21:21:41 2005 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5290A16A4D0 for ; Tue, 1 Feb 2005 21:21:41 +0000 (GMT) Received: from mail27.sea5.speakeasy.net (mail27.sea5.speakeasy.net [69.17.117.29]) by mx1.FreeBSD.org (Postfix) with ESMTP id 906FB43D5C for ; Tue, 1 Feb 2005 21:21:39 +0000 (GMT) (envelope-from jhb@FreeBSD.org) Received: (qmail 13751 invoked from network); 1 Feb 2005 21:21:39 -0000 Received: from server.baldwin.cx ([216.27.160.63]) (envelope-sender )AES256-SHA encrypted SMTP for ; 1 Feb 2005 21:21:18 -0000 Received: from [10.50.40.202] (gw1.twc.weather.com [216.133.140.1]) (authenticated bits=0) by server.baldwin.cx (8.13.1/8.13.1) with ESMTP id j11LJw2m040829; Tue, 1 Feb 2005 16:20:50 -0500 (EST) (envelope-from jhb@FreeBSD.org) From: John Baldwin To: Maxim Sobolev Date: Tue, 1 Feb 2005 16:12:09 -0500 User-Agent: KMail/1.6.2 References: <200501292312.j0TNC0VE052634@repoman.freebsd.org> <41FF9FB1.10107@portaone.com> <200502011128.27071.jhb@FreeBSD.org> In-Reply-To: <200502011128.27071.jhb@FreeBSD.org> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200502011612.09633.jhb@FreeBSD.org> X-Spam-Status: No, score=-102.8 required=4.2 tests=ALL_TRUSTED, USER_IN_WHITELIST autolearn=failed version=3.0.2 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on server.baldwin.cx cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/alpha/linux linux_sysvec.c src/sys/alpha/osf1 imgact_osf1.c osf1_sysvec.c src/sys/amd64/linux32 linux32_sysvec.c src/sys/compat/ia32 ia32_sysvec.c src/sys/compat/pecoff imgact_pecoff.c src/sys/compat/svr4 imgact_svr4.c svr4_sysvec.c ... X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Feb 2005 21:21:41 -0000 On Tuesday 01 February 2005 11:28 am, John Baldwin wrote: > On Tuesday 01 February 2005 10:26 am, Maxim Sobolev wrote: > > John Baldwin wrote: > > > On Monday 31 January 2005 06:10 pm, Maxim Sobolev wrote: > > >>John Baldwin wrote: > > >>>On Saturday 29 January 2005 06:12 pm, Maxim Sobolev wrote: > > >>>>sobomax 2005-01-29 23:12:00 UTC > > >>>> > > >>>> FreeBSD src repository > > >>>> > > >>>> Modified files: > > >>>> sys/alpha/linux linux_sysvec.c > > >>>> sys/alpha/osf1 imgact_osf1.c osf1_sysvec.c > > >>>> sys/amd64/linux32 linux32_sysvec.c > > >>>> sys/compat/ia32 ia32_sysvec.c > > >>>> sys/compat/pecoff imgact_pecoff.c > > >>>> sys/compat/svr4 imgact_svr4.c svr4_sysvec.c > > >>>> sys/i386/ibcs2 ibcs2_sysvec.c imgact_coff.c > > >>>> sys/i386/linux imgact_linux.c linux_sysvec.c > > >>>> linux_machdep.c > > >>>> sys/kern imgact_aout.c imgact_elf.c imgact_gzip.c > > >>>> imgact_shell.c kern_exec.c kern_kse.c > > >>>> sys/modules Makefile > > >>>> sys/sys imgact.h syscallsubr.h > > >>>> Log: > > >>>> o Split out kernel part of execve(2) syscall into two parts: one > > >>>> that copies arguments into the kernel space and one that operates > > >>>> completely in the kernel space; > > >>>> > > >>>> o use kernel-only version of execve(2) to kill another stackgap in > > >>>> linuxlator/i386. > > >>>> > > >>>> Obtained from: DragonFlyBSD (partially) > > >>>> MFC after: 2 weeks > > >>> > > >>>Cool, this had been on my anti-stackgap todo list as well. > > >>> > > >>:-) > > >> > > >>We have been tolerating this stackgap hack for too long. > > >> > > >>Right now linuxlator/i386 is almost stackgap-free. The only remaining > > >>stackgap is in semctl(2) syscal, which in my opinion it is very > > >>over/under engineered API, so that there is no a good clean way to do > > >>the split. At the same time, it's not the one used oftenly, so that I > > >>can wait when I (or somebody else) is in the right mood to do the > > >>remaining work. > > >> > > >>Other arches/emulation layers are awaiting for somebody (maintainers?) > > >>to do the work, which will be very easy one, since most popular kernel > > >>interfaces that work on userland structures/buffers have been split. > > > > > > That's not the only one. All the filesystem system calls use the > > > stackgap to handle the /compat/linux namespace. Fixing that will not > > > be trivial, as it will involve teaching namei() to retrieve filenames > > > using a uio or some such so that names can either be in user space or > > > in kernel space. Either that or we add native support for prefixes > > > like /compat/foo to namei() by sticking a pointer to a prefix in struct > > > sysent or some such. > > > > Hmm, are you 100% sure? As long as I can see they all use LCONVPATH() > > macros, which in turn uses linux_emul_convpath() function from > > linux_util.c. The latter function is stackgap-free. The only > > commonly-used function "infected" with stackgap in linuxlator is > > linux_emul_find (and so that CHECKALT*() macroses that use it). My plan > > was to remove that function entirely, but apparently it is still used in > > non-i386 versions of linuxlator, so that it can be done yet. > > Ah, someone fixed this already while I wasn't looking. Now we should just > genericize linux_emul_convpath() (to take a prefix argument) and fix all > the ABIs to use that instead. I can add that to my todo list I guess. > There are also other stackgap uses in other ABIs that need to be worked on > besides just Linux/i386, but those are already on my todo. In fact, I'm currently working on this. Watch this space. :) -- John Baldwin <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org