From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KggWG-0003qO-TB for qemu-devel@nongnu.org; Fri, 19 Sep 2008 09:59:37 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KggWG-0003q6-Io for qemu-devel@nongnu.org; Fri, 19 Sep 2008 09:59:36 -0400 Received: from [199.232.76.173] (port=39628 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KggWG-0003q0-CP for qemu-devel@nongnu.org; Fri, 19 Sep 2008 09:59:36 -0400 Received: from [84.20.150.76] (port=58194 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 1KggWG-0001Oh-8o for qemu-devel@nongnu.org; Fri, 19 Sep 2008 09:59:36 -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 02F5B3274001 for ; Fri, 19 Sep 2008 16:59:31 +0300 (EEST) Date: Fri, 19 Sep 2008 16:59:30 +0300 From: Riku Voipio Subject: Re: [Qemu-devel] [PATCH] Swap only altered elements of the grouplist Message-ID: <20080919135930.GB21479@kos.to> References: <1221750426-14863-1-git-send-email-kirill@shutemov.name> <1221750426-14863-2-git-send-email-kirill@shutemov.name> <1221750426-14863-3-git-send-email-kirill@shutemov.name> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1221750426-14863-3-git-send-email-kirill@shutemov.name> 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 Thu, Sep 18, 2008 at 06:07:01PM +0300, Kirill A. Shutemov wrote: > getgroups returns the number of supplementary group IDs is returned. > So it's unnessary to swap the entire array. It can dramatically speed up > the syscall: on recent Linux kernel NGROUPS_MAX=65536. looks ok too. > Signed-off-by: Kirill A. Shutemov > --- > linux-user/syscall.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 948ea3b..ba7cde1 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -5253,7 +5253,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > target_grouplist = lock_user(VERIFY_WRITE, arg2, gidsetsize * 2, 0); > if (!target_grouplist) > goto efault; > - for(i = 0;i < gidsetsize; i++) > + for(i = 0;i < ret; i++) > target_grouplist[i] = tswap16(grouplist[i]); > unlock_user(target_grouplist, arg2, gidsetsize * 2); > } > @@ -5407,7 +5407,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, > ret = -TARGET_EFAULT; > goto fail; > } > - for(i = 0;i < gidsetsize; i++) > + for(i = 0;i < ret; i++) > target_grouplist[i] = tswap32(grouplist[i]); > unlock_user(target_grouplist, arg2, gidsetsize * 4); > } > -- > 1.5.6.5.GIT > > -- "rm -rf" only sounds scary if you don't have backups