From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KgeIa-0000jw-Oz for qemu-devel@nongnu.org; Fri, 19 Sep 2008 07:37:20 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KgeIa-0000jk-5U for qemu-devel@nongnu.org; Fri, 19 Sep 2008 07:37:20 -0400 Received: from [199.232.76.173] (port=58041 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KgeIZ-0000je-TK for qemu-devel@nongnu.org; Fri, 19 Sep 2008 07:37:19 -0400 Received: from [84.20.150.76] (port=56532 helo=narury.org) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KgeIZ-0004lz-Fu for qemu-devel@nongnu.org; Fri, 19 Sep 2008 07:37:19 -0400 Received: from kos.to (localhost.localdomain [127.0.0.1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by narury.org (Postfix) with ESMTP id 0C24D3274001 for ; Fri, 19 Sep 2008 14:37:14 +0300 (EEST) Date: Fri, 19 Sep 2008 14:37:13 +0300 From: Riku Voipio Subject: Re: [Qemu-devel] [PATCH] uselib, mincore and readahead syscalls Message-ID: <20080919113713.GB9668@kos.to> References: <20080917194542.GC21187@kos.to> <20080919080534.GB18614@localhost.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080919080534.GB18614@localhost.localdomain> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org On Fri, Sep 19, 2008 at 11:05:35AM +0300, Kirill A. Shutemov wrote: > On Wed, Sep 17, 2008 at 10:45:42PM +0300, Riku Voipio wrote: > > These have been carried in Debian since forever. Added lock_user() > > calls for mincore before submitting, I'm not sure if that's the correct > > way? > > > > Signed-off-by: Riku Voipio > I think this patch should be splited by syscall. Yes, but expecting that these patches as going to be ignored I didn't want to put too much effort in them.. > > Index: trunk/linux-user/syscall.c > > =================================================================== > > --- trunk.orig/linux-user/syscall.c 2008-09-17 20:07:40.000000000 +0300 > > +++ trunk/linux-user/syscall.c 2008-09-17 21:43:47.000000000 +0300 > > @@ -276,6 +276,7 @@ > > extern int setfsuid(int); > > extern int setfsgid(int); > > extern int setgroups(int, gid_t *); > > +extern int uselib(const char*); > Probably, we should use _syscall1 macros instead. Why? More specifically, in which cases should we use _syscall macros and which cases the libc versions? I don't see much logic in the current mix of both being used in syscall.c > > #define ERRNO_TABLE_SIZE 1200 > > > > @@ -4226,7 +4227,13 @@ > > #endif > > #ifdef TARGET_NR_uselib > > case TARGET_NR_uselib: > > - goto unimplemented; > > + { > > + if(!(p = lock_user_string(arg1))) > > + goto efault; > > + ret = get_errno(uselib(path(p))); > > + unlock_user(p, arg1, 0); > > + } > > + break; > > #endif > > #ifdef TARGET_NR_swapon > > case TARGET_NR_swapon: > > @@ -5512,7 +5519,18 @@ > > goto unimplemented; > > #ifdef TARGET_NR_mincore > > case TARGET_NR_mincore: > > - goto unimplemented; > > + { > > + void *a; > > + if (!(a = lock_user(VERIFY_READ, arg1,arg2, 0))) > > + goto efault; > > + if (!(p = lock_user_string(arg3))) > > + goto mincore_fail; > > + ret = get_errno(mincore((void*)a, (size_t)arg2, (unsigned char*)p)); > > Type casting is unneeded here. Will fix > > + unlock_user(p, arg3, ret); > > + mincore_fail: > > + unlock_user(a, arg1, 0); > You should set ret here. Will fix > > + } > > + break; > > #endif > > #ifdef TARGET_NR_madvise > > case TARGET_NR_madvise: > > @@ -5652,7 +5670,8 @@ > > break; > > #ifdef TARGET_NR_readahead > > case TARGET_NR_readahead: > > - goto unimplemented; > > + ret = get_errno(readahead((int)arg1, (off64_t)arg2, (size_t)arg3)); > > Type casting is unneeded here. Will fix > > + break; > > #endif > > #ifdef TARGET_NR_setxattr > > case TARGET_NR_setxattr: > > -- > Regards, Kirill A. Shutemov > + Belarus, Minsk > + ALT Linux Team, http://www.altlinux.com/ -- "rm -rf" only sounds scary if you don't have backups