]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/proc/base.c
fs/proc/base.c: use ns_capable instead of capable for timerslack_ns
[linux.git] / fs / proc / base.c
index d7fd1ca807d2c32ca28c78bd852d50b66e001822..58a8dc3fd6c612ae005711f318769c03c0d31b82 100644 (file)
@@ -2356,10 +2356,13 @@ static ssize_t timerslack_ns_write(struct file *file, const char __user *buf,
                return -ESRCH;
 
        if (p != current) {
-               if (!capable(CAP_SYS_NICE)) {
+               rcu_read_lock();
+               if (!ns_capable(__task_cred(p)->user_ns, CAP_SYS_NICE)) {
+                       rcu_read_unlock();
                        count = -EPERM;
                        goto out;
                }
+               rcu_read_unlock();
 
                err = security_task_setscheduler(p);
                if (err) {
@@ -2392,11 +2395,14 @@ static int timerslack_ns_show(struct seq_file *m, void *v)
                return -ESRCH;
 
        if (p != current) {
-
-               if (!capable(CAP_SYS_NICE)) {
+               rcu_read_lock();
+               if (!ns_capable(__task_cred(p)->user_ns, CAP_SYS_NICE)) {
+                       rcu_read_unlock();
                        err = -EPERM;
                        goto out;
                }
+               rcu_read_unlock();
+
                err = security_task_getscheduler(p);
                if (err)
                        goto out;