From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KgL5U-00049r-G2 for qemu-devel@nongnu.org; Thu, 18 Sep 2008 11:06:32 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KgL5R-00048F-IB for qemu-devel@nongnu.org; Thu, 18 Sep 2008 11:06:31 -0400 Received: from [199.232.76.173] (port=56918 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KgL5Q-00047o-VR for qemu-devel@nongnu.org; Thu, 18 Sep 2008 11:06:29 -0400 Received: from ey-out-1920.google.com ([74.125.78.148]:7979) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KgL5P-0005aE-Ry for qemu-devel@nongnu.org; Thu, 18 Sep 2008 11:06:28 -0400 Received: by ey-out-1920.google.com with SMTP id 4so1516425eyk.4 for ; Thu, 18 Sep 2008 08:06:27 -0700 (PDT) From: "Kirill A. Shutemov" Date: Thu, 18 Sep 2008 18:07:01 +0300 Message-Id: <1221750426-14863-3-git-send-email-kirill@shutemov.name> In-Reply-To: <1221750426-14863-2-git-send-email-kirill@shutemov.name> References: <1221750426-14863-1-git-send-email-kirill@shutemov.name> <1221750426-14863-2-git-send-email-kirill@shutemov.name> Subject: [Qemu-devel] [PATCH] Swap only altered elements of the grouplist 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 Cc: "Kirill A. Shutemov" 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. 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