uid16.c (f838bad1b3be8ca0c785ee0e0c570dfda74cf377) | uid16.c (b6dff3ec5e116e3af6f537d4caedcad6b9e5082a) |
---|---|
1/* 2 * Wrapper functions for 16bit uid back compatibility. All nicely tied 3 * together in the faint hope we can take the out in five years time. 4 */ 5 6#include <linux/mm.h> 7#include <linux/utsname.h> 8#include <linux/mman.h> --- 72 unchanged lines hidden (view full) --- 81 asmlinkage_protect(3, ret, ruid, euid, suid); 82 return ret; 83} 84 85asmlinkage long sys_getresuid16(old_uid_t __user *ruid, old_uid_t __user *euid, old_uid_t __user *suid) 86{ 87 int retval; 88 | 1/* 2 * Wrapper functions for 16bit uid back compatibility. All nicely tied 3 * together in the faint hope we can take the out in five years time. 4 */ 5 6#include <linux/mm.h> 7#include <linux/utsname.h> 8#include <linux/mman.h> --- 72 unchanged lines hidden (view full) --- 81 asmlinkage_protect(3, ret, ruid, euid, suid); 82 return ret; 83} 84 85asmlinkage long sys_getresuid16(old_uid_t __user *ruid, old_uid_t __user *euid, old_uid_t __user *suid) 86{ 87 int retval; 88 |
89 if (!(retval = put_user(high2lowuid(current->uid), ruid)) && 90 !(retval = put_user(high2lowuid(current->euid), euid))) 91 retval = put_user(high2lowuid(current->suid), suid); | 89 if (!(retval = put_user(high2lowuid(current->cred->uid), ruid)) && 90 !(retval = put_user(high2lowuid(current->cred->euid), euid))) 91 retval = put_user(high2lowuid(current->cred->suid), suid); |
92 93 return retval; 94} 95 96asmlinkage long sys_setresgid16(old_gid_t rgid, old_gid_t egid, old_gid_t sgid) 97{ 98 long ret = sys_setresgid(low2highgid(rgid), low2highgid(egid), 99 low2highgid(sgid)); 100 /* avoid REGPARM breakage on x86: */ 101 asmlinkage_protect(3, ret, rgid, egid, sgid); 102 return ret; 103} 104 105asmlinkage long sys_getresgid16(old_gid_t __user *rgid, old_gid_t __user *egid, old_gid_t __user *sgid) 106{ 107 int retval; 108 | 92 93 return retval; 94} 95 96asmlinkage long sys_setresgid16(old_gid_t rgid, old_gid_t egid, old_gid_t sgid) 97{ 98 long ret = sys_setresgid(low2highgid(rgid), low2highgid(egid), 99 low2highgid(sgid)); 100 /* avoid REGPARM breakage on x86: */ 101 asmlinkage_protect(3, ret, rgid, egid, sgid); 102 return ret; 103} 104 105asmlinkage long sys_getresgid16(old_gid_t __user *rgid, old_gid_t __user *egid, old_gid_t __user *sgid) 106{ 107 int retval; 108 |
109 if (!(retval = put_user(high2lowgid(current->gid), rgid)) && 110 !(retval = put_user(high2lowgid(current->egid), egid))) 111 retval = put_user(high2lowgid(current->sgid), sgid); | 109 if (!(retval = put_user(high2lowgid(current->cred->gid), rgid)) && 110 !(retval = put_user(high2lowgid(current->cred->egid), egid))) 111 retval = put_user(high2lowgid(current->cred->sgid), sgid); |
112 113 return retval; 114} 115 116asmlinkage long sys_setfsuid16(old_uid_t uid) 117{ 118 long ret = sys_setfsuid(low2highuid(uid)); 119 /* avoid REGPARM breakage on x86: */ --- 41 unchanged lines hidden (view full) --- 161 162asmlinkage long sys_getgroups16(int gidsetsize, old_gid_t __user *grouplist) 163{ 164 int i = 0; 165 166 if (gidsetsize < 0) 167 return -EINVAL; 168 | 112 113 return retval; 114} 115 116asmlinkage long sys_setfsuid16(old_uid_t uid) 117{ 118 long ret = sys_setfsuid(low2highuid(uid)); 119 /* avoid REGPARM breakage on x86: */ --- 41 unchanged lines hidden (view full) --- 161 162asmlinkage long sys_getgroups16(int gidsetsize, old_gid_t __user *grouplist) 163{ 164 int i = 0; 165 166 if (gidsetsize < 0) 167 return -EINVAL; 168 |
169 get_group_info(current->group_info); 170 i = current->group_info->ngroups; | 169 get_group_info(current->cred->group_info); 170 i = current->cred->group_info->ngroups; |
171 if (gidsetsize) { 172 if (i > gidsetsize) { 173 i = -EINVAL; 174 goto out; 175 } | 171 if (gidsetsize) { 172 if (i > gidsetsize) { 173 i = -EINVAL; 174 goto out; 175 } |
176 if (groups16_to_user(grouplist, current->group_info)) { | 176 if (groups16_to_user(grouplist, current->cred->group_info)) { |
177 i = -EFAULT; 178 goto out; 179 } 180 } 181out: | 177 i = -EFAULT; 178 goto out; 179 } 180 } 181out: |
182 put_group_info(current->group_info); | 182 put_group_info(current->cred->group_info); |
183 return i; 184} 185 186asmlinkage long sys_setgroups16(int gidsetsize, old_gid_t __user *grouplist) 187{ 188 struct group_info *group_info; 189 int retval; 190 --- 14 unchanged lines hidden (view full) --- 205 retval = set_current_groups(group_info); 206 put_group_info(group_info); 207 208 return retval; 209} 210 211asmlinkage long sys_getuid16(void) 212{ | 183 return i; 184} 185 186asmlinkage long sys_setgroups16(int gidsetsize, old_gid_t __user *grouplist) 187{ 188 struct group_info *group_info; 189 int retval; 190 --- 14 unchanged lines hidden (view full) --- 205 retval = set_current_groups(group_info); 206 put_group_info(group_info); 207 208 return retval; 209} 210 211asmlinkage long sys_getuid16(void) 212{ |
213 return high2lowuid(current->uid); | 213 return high2lowuid(current->cred->uid); |
214} 215 216asmlinkage long sys_geteuid16(void) 217{ | 214} 215 216asmlinkage long sys_geteuid16(void) 217{ |
218 return high2lowuid(current->euid); | 218 return high2lowuid(current->cred->euid); |
219} 220 221asmlinkage long sys_getgid16(void) 222{ | 219} 220 221asmlinkage long sys_getgid16(void) 222{ |
223 return high2lowgid(current->gid); | 223 return high2lowgid(current->cred->gid); |
224} 225 226asmlinkage long sys_getegid16(void) 227{ | 224} 225 226asmlinkage long sys_getegid16(void) 227{ |
228 return high2lowgid(current->egid); | 228 return high2lowgid(current->cred->egid); |
229} | 229} |