Skip to contentSkip to conversation

syscall getgroups() optimization

PATCH In review Kirill A. Shutemov 1 participant 2 messages Jun 25, 2007 – Jun 29, 2007

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 syscall getgroups() optimization

On success, getgroups() returns the number of supplementary group IDs. So, we can swap real number group IDs.

Patch in the attachment.

Signature · 4 lines
Regards,  Kirill A. Shutemov
 + Belarus, Minsk
 + Velesys LLC, http://www.velesys.com/
 + ALT Linux Team, http://www.altlinux.com/
linux-user/syscall.c +2 -2
@@ -3741,7 +4144,7 @@
             ret = get_errno(getgroups(gidsetsize, grouplist));
             if (!is_error(ret)) {
                 target_grouplist = lock_user(arg2, gidsetsize * 2, 0);
-                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);
             }
@@ -3873,7 +4276,7 @@
             ret = get_errno(getgroups(gidsetsize, grouplist));
             if (!is_error(ret)) {
                 target_grouplist = lock_user(arg2, gidsetsize * 4, 0);
-                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 lore raw
Quoted 4 lines · Kirill A. Shutemov

On success, getgroups() returns the number of supplementary group IDs. So, we can swap real number group IDs.

Patch in the attachment.

It's trivial. Can anybody commit?

Signature · 4 lines
Regards,  Kirill A. Shutemov
 + Belarus, Minsk
 + Velesys LLC, http://www.velesys.com/
 + ALT Linux Team, http://www.altlinux.com/