prctl: adds the capable(CAP_SYS_NICE) check to PR_SET_TIMERSLACK_PID.
authorRuchi Kandoi <kandoiruchi@google.com>
Sat, 14 Jun 2014 00:03:01 +0000 (17:03 -0700)
committerJohn Stultz <john.stultz@linaro.org>
Tue, 16 Feb 2016 21:53:48 +0000 (13:53 -0800)
Adds a capable() check to make sure that arbitary apps do not change the
timer slack for other apps.

Bug: 15000427
Change-Id: I558a2551a0e3579c7f7e7aae54b28aa9d982b209
Signed-off-by: Ruchi Kandoi <kandoiruchi@google.com>
kernel/sys.c

index fd06809929129465f96e38aa47a5d84a0bcad490..d448bad888238512458763828ef17dc4940b6055 100644 (file)
@@ -2201,6 +2201,9 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
                                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) {