diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2012-02-07 21:51:01 -0500 |
---|---|---|
committer | Eric W. Biederman <ebiederm@xmission.com> | 2012-05-03 06:28:41 -0400 |
commit | a29c33f4e506e1dae7e0985b6328046535becbf8 (patch) | |
tree | 529720b8aefaf115b4be197e5d7628657cf5b4bc /kernel/exit.c | |
parent | 18815a18085364d8514c0d0c4c986776cb74272c (diff) |
userns: Convert setting and getting uid and gid system calls to use kuid and kgid
Convert setregid, setgid, setreuid, setuid,
setresuid, getresuid, setresgid, getresgid, setfsuid, setfsgid,
getuid, geteuid, getgid, getegid,
waitpid, waitid, wait4.
Convert userspace uids and gids into kuids and kgids before
being placed on struct cred. Convert struct cred kuids and
kgids into userspace uids and gids when returning them.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Diffstat (limited to 'kernel/exit.c')
-rw-r--r-- | kernel/exit.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index d8bd3b425fa7..789e3c5777f7 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
@@ -1214,7 +1214,7 @@ static int wait_task_zombie(struct wait_opts *wo, struct task_struct *p) | |||
1214 | unsigned long state; | 1214 | unsigned long state; |
1215 | int retval, status, traced; | 1215 | int retval, status, traced; |
1216 | pid_t pid = task_pid_vnr(p); | 1216 | pid_t pid = task_pid_vnr(p); |
1217 | uid_t uid = __task_cred(p)->uid; | 1217 | uid_t uid = from_kuid_munged(current_user_ns(), __task_cred(p)->uid); |
1218 | struct siginfo __user *infop; | 1218 | struct siginfo __user *infop; |
1219 | 1219 | ||
1220 | if (!likely(wo->wo_flags & WEXITED)) | 1220 | if (!likely(wo->wo_flags & WEXITED)) |
@@ -1427,7 +1427,7 @@ static int wait_task_stopped(struct wait_opts *wo, | |||
1427 | if (!unlikely(wo->wo_flags & WNOWAIT)) | 1427 | if (!unlikely(wo->wo_flags & WNOWAIT)) |
1428 | *p_code = 0; | 1428 | *p_code = 0; |
1429 | 1429 | ||
1430 | uid = task_uid(p); | 1430 | uid = from_kuid_munged(current_user_ns(), __task_cred(p)->uid); |
1431 | unlock_sig: | 1431 | unlock_sig: |
1432 | spin_unlock_irq(&p->sighand->siglock); | 1432 | spin_unlock_irq(&p->sighand->siglock); |
1433 | if (!exit_code) | 1433 | if (!exit_code) |
@@ -1500,7 +1500,7 @@ static int wait_task_continued(struct wait_opts *wo, struct task_struct *p) | |||
1500 | } | 1500 | } |
1501 | if (!unlikely(wo->wo_flags & WNOWAIT)) | 1501 | if (!unlikely(wo->wo_flags & WNOWAIT)) |
1502 | p->signal->flags &= ~SIGNAL_STOP_CONTINUED; | 1502 | p->signal->flags &= ~SIGNAL_STOP_CONTINUED; |
1503 | uid = task_uid(p); | 1503 | uid = from_kuid_munged(current_user_ns(), __task_cred(p)->uid); |
1504 | spin_unlock_irq(&p->sighand->siglock); | 1504 | spin_unlock_irq(&p->sighand->siglock); |
1505 | 1505 | ||
1506 | pid = task_pid_vnr(p); | 1506 | pid = task_pid_vnr(p); |