diff options
Diffstat (limited to 'kernel/sys.c')
| -rw-r--r-- | kernel/sys.c | 7 | 
1 files changed, 2 insertions, 5 deletions
| diff --git a/kernel/sys.c b/kernel/sys.c index 26a6b73a6b8..877fe4f8e05 100644 --- a/kernel/sys.c +++ b/kernel/sys.c | |||
| @@ -222,6 +222,7 @@ SYSCALL_DEFINE2(getpriority, int, which, int, who) | |||
| 222 | if (which > PRIO_USER || which < PRIO_PROCESS) | 222 | if (which > PRIO_USER || which < PRIO_PROCESS) | 
| 223 | return -EINVAL; | 223 | return -EINVAL; | 
| 224 | 224 | ||
| 225 | rcu_read_lock(); | ||
| 225 | read_lock(&tasklist_lock); | 226 | read_lock(&tasklist_lock); | 
| 226 | switch (which) { | 227 | switch (which) { | 
| 227 | case PRIO_PROCESS: | 228 | case PRIO_PROCESS: | 
| @@ -267,6 +268,7 @@ SYSCALL_DEFINE2(getpriority, int, which, int, who) | |||
| 267 | } | 268 | } | 
| 268 | out_unlock: | 269 | out_unlock: | 
| 269 | read_unlock(&tasklist_lock); | 270 | read_unlock(&tasklist_lock); | 
| 271 | rcu_read_unlock(); | ||
| 270 | 272 | ||
| 271 | return retval; | 273 | return retval; | 
| 272 | } | 274 | } | 
| @@ -569,11 +571,6 @@ static int set_user(struct cred *new) | |||
| 569 | if (!new_user) | 571 | if (!new_user) | 
| 570 | return -EAGAIN; | 572 | return -EAGAIN; | 
| 571 | 573 | ||
| 572 | if (!task_can_switch_user(new_user, current)) { | ||
| 573 | free_uid(new_user); | ||
| 574 | return -EINVAL; | ||
| 575 | } | ||
| 576 | |||
| 577 | if (atomic_read(&new_user->processes) >= | 574 | if (atomic_read(&new_user->processes) >= | 
| 578 | current->signal->rlim[RLIMIT_NPROC].rlim_cur && | 575 | current->signal->rlim[RLIMIT_NPROC].rlim_cur && | 
| 579 | new_user != INIT_USER) { | 576 | new_user != INIT_USER) { | 
