From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KchKm-0007ww-Dk for qemu-devel@nongnu.org; Mon, 08 Sep 2008 10:03:16 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KchKj-0007v9-QF for qemu-devel@nongnu.org; Mon, 08 Sep 2008 10:03:14 -0400 Received: from [199.232.76.173] (port=39229 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KchKj-0007v1-HU for qemu-devel@nongnu.org; Mon, 08 Sep 2008 10:03:13 -0400 Received: from gv-out-0910.google.com ([216.239.58.191]:33180) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KchKi-0007FW-Uw for qemu-devel@nongnu.org; Mon, 08 Sep 2008 10:03:13 -0400 Received: by gv-out-0910.google.com with SMTP id n8so222137gve.36 for ; Mon, 08 Sep 2008 07:03:12 -0700 (PDT) From: "Kirill A. Shutemov" Date: Mon, 8 Sep 2008 17:03:31 +0300 Message-Id: <1220882616-18735-3-git-send-email-kirill@shutemov.name> In-Reply-To: <1220882616-18735-2-git-send-email-kirill@shutemov.name> References: <1220882616-18735-1-git-send-email-kirill@shutemov.name> <1220882616-18735-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 9d8542d..8112a56 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -5248,7 +5248,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); } @@ -5402,7 +5402,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