mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 14:42:37 +02:00
prctl: fix misplaced PR_SET_TIMERSLACK_PID case
The case clause for the PR_SET_TIMERSLACK_PID option was placed inside the an internal switch statement for PR_MCE_KILL (see commits37a591d4and8ae872f1) . This commit moves it to the right place. Change-Id: I63251669d7e2f2aa843d1b0900e7df61518c3dea Signed-off-by: Micha Kalfon <micha@cellrox.com> Acked-by: Oren Laadan <orenl@cellrox.com>
This commit is contained in:
parent
c76b9f83bf
commit
e1a60cbe03
40
kernel/sys.c
40
kernel/sys.c
|
|
@ -2377,26 +2377,6 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
|
|||
else
|
||||
return -EINVAL;
|
||||
break;
|
||||
case PR_SET_TIMERSLACK_PID:
|
||||
if (current->pid != (pid_t)arg3 &&
|
||||
!capable(CAP_SYS_NICE))
|
||||
return -EPERM;
|
||||
rcu_read_lock();
|
||||
tsk = find_task_by_pid_ns((pid_t)arg3, &init_pid_ns);
|
||||
if (tsk == NULL) {
|
||||
rcu_read_unlock();
|
||||
return -EINVAL;
|
||||
}
|
||||
get_task_struct(tsk);
|
||||
rcu_read_unlock();
|
||||
if (arg2 <= 0)
|
||||
tsk->timer_slack_ns =
|
||||
tsk->default_timer_slack_ns;
|
||||
else
|
||||
tsk->timer_slack_ns = arg2;
|
||||
put_task_struct(tsk);
|
||||
error = 0;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
@ -2416,6 +2396,26 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
|
|||
case PR_GET_TID_ADDRESS:
|
||||
error = prctl_get_tid_address(me, (int __user **)arg2);
|
||||
break;
|
||||
case PR_SET_TIMERSLACK_PID:
|
||||
if (current->pid != (pid_t)arg3 &&
|
||||
!capable(CAP_SYS_NICE))
|
||||
return -EPERM;
|
||||
rcu_read_lock();
|
||||
tsk = find_task_by_pid_ns((pid_t)arg3, &init_pid_ns);
|
||||
if (tsk == NULL) {
|
||||
rcu_read_unlock();
|
||||
return -EINVAL;
|
||||
}
|
||||
get_task_struct(tsk);
|
||||
rcu_read_unlock();
|
||||
if (arg2 <= 0)
|
||||
tsk->timer_slack_ns =
|
||||
tsk->default_timer_slack_ns;
|
||||
else
|
||||
tsk->timer_slack_ns = arg2;
|
||||
put_task_struct(tsk);
|
||||
error = 0;
|
||||
break;
|
||||
case PR_SET_CHILD_SUBREAPER:
|
||||
me->signal->is_child_subreaper = !!arg2;
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user