diff options
| -rw-r--r-- | arch/s390/kernel/compat_linux.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c index 8b6e4f5288a2..1f1b8c70ab97 100644 --- a/arch/s390/kernel/compat_linux.c +++ b/arch/s390/kernel/compat_linux.c | |||
| @@ -221,25 +221,26 @@ static int groups16_from_user(struct group_info *group_info, u16 __user *groupli | |||
| 221 | 221 | ||
| 222 | asmlinkage long sys32_getgroups16(int gidsetsize, u16 __user *grouplist) | 222 | asmlinkage long sys32_getgroups16(int gidsetsize, u16 __user *grouplist) |
| 223 | { | 223 | { |
| 224 | const struct cred *cred = current_cred(); | ||
| 224 | int i; | 225 | int i; |
| 225 | 226 | ||
| 226 | if (gidsetsize < 0) | 227 | if (gidsetsize < 0) |
| 227 | return -EINVAL; | 228 | return -EINVAL; |
| 228 | 229 | ||
| 229 | get_group_info(current->cred->group_info); | 230 | get_group_info(cred->group_info); |
| 230 | i = current->cred->group_info->ngroups; | 231 | i = cred->group_info->ngroups; |
| 231 | if (gidsetsize) { | 232 | if (gidsetsize) { |
| 232 | if (i > gidsetsize) { | 233 | if (i > gidsetsize) { |
| 233 | i = -EINVAL; | 234 | i = -EINVAL; |
| 234 | goto out; | 235 | goto out; |
| 235 | } | 236 | } |
| 236 | if (groups16_to_user(grouplist, current->cred->group_info)) { | 237 | if (groups16_to_user(grouplist, cred->group_info)) { |
| 237 | i = -EFAULT; | 238 | i = -EFAULT; |
| 238 | goto out; | 239 | goto out; |
| 239 | } | 240 | } |
| 240 | } | 241 | } |
| 241 | out: | 242 | out: |
| 242 | put_group_info(current->cred->group_info); | 243 | put_group_info(cred->group_info); |
| 243 | return i; | 244 | return i; |
| 244 | } | 245 | } |
| 245 | 246 | ||
