]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - kernel/uid16.c
CRED: Wrap current->cred and a few other accessors
[net-next-2.6.git] / kernel / uid16.c
index 71f07fc39fea0605e6a57e7615c7eb7352d0e1ee..2460c3199b5a2e10e4bda0001d76b2c066975410 100644 (file)
@@ -84,11 +84,12 @@ asmlinkage long sys_setresuid16(old_uid_t ruid, old_uid_t euid, old_uid_t suid)
 
 asmlinkage long sys_getresuid16(old_uid_t __user *ruid, old_uid_t __user *euid, old_uid_t __user *suid)
 {
+       const struct cred *cred = current_cred();
        int retval;
 
-       if (!(retval = put_user(high2lowuid(current->cred->uid), ruid)) &&
-           !(retval = put_user(high2lowuid(current->cred->euid), euid)))
-               retval = put_user(high2lowuid(current->cred->suid), suid);
+       if (!(retval   = put_user(high2lowuid(cred->uid),  ruid)) &&
+           !(retval   = put_user(high2lowuid(cred->euid), euid)))
+               retval = put_user(high2lowuid(cred->suid), suid);
 
        return retval;
 }
@@ -104,11 +105,12 @@ asmlinkage long sys_setresgid16(old_gid_t rgid, old_gid_t egid, old_gid_t sgid)
 
 asmlinkage long sys_getresgid16(old_gid_t __user *rgid, old_gid_t __user *egid, old_gid_t __user *sgid)
 {
+       const struct cred *cred = current_cred();
        int retval;
 
-       if (!(retval = put_user(high2lowgid(current->cred->gid), rgid)) &&
-           !(retval = put_user(high2lowgid(current->cred->egid), egid)))
-               retval = put_user(high2lowgid(current->cred->sgid), sgid);
+       if (!(retval   = put_user(high2lowgid(cred->gid),  rgid)) &&
+           !(retval   = put_user(high2lowgid(cred->egid), egid)))
+               retval = put_user(high2lowgid(cred->sgid), sgid);
 
        return retval;
 }
@@ -161,25 +163,24 @@ static int groups16_from_user(struct group_info *group_info,
 
 asmlinkage long sys_getgroups16(int gidsetsize, old_gid_t __user *grouplist)
 {
-       int i = 0;
+       const struct cred *cred = current_cred();
+       int i;
 
        if (gidsetsize < 0)
                return -EINVAL;
 
-       get_group_info(current->cred->group_info);
-       i = current->cred->group_info->ngroups;
+       i = cred->group_info->ngroups;
        if (gidsetsize) {
                if (i > gidsetsize) {
                        i = -EINVAL;
                        goto out;
                }
-               if (groups16_to_user(grouplist, current->cred->group_info)) {
+               if (groups16_to_user(grouplist, cred->group_info)) {
                        i = -EFAULT;
                        goto out;
                }
        }
 out:
-       put_group_info(current->cred->group_info);
        return i;
 }
 
@@ -210,20 +211,20 @@ asmlinkage long sys_setgroups16(int gidsetsize, old_gid_t __user *grouplist)
 
 asmlinkage long sys_getuid16(void)
 {
-       return high2lowuid(current->cred->uid);
+       return high2lowuid(current_uid());
 }
 
 asmlinkage long sys_geteuid16(void)
 {
-       return high2lowuid(current->cred->euid);
+       return high2lowuid(current_euid());
 }
 
 asmlinkage long sys_getgid16(void)
 {
-       return high2lowgid(current->cred->gid);
+       return high2lowgid(current_gid());
 }
 
 asmlinkage long sys_getegid16(void)
 {
-       return high2lowgid(current->cred->egid);
+       return high2lowgid(current_egid());
 }