diff options
author | James Morris <james.l.morris@oracle.com> | 2017-02-10 10:28:49 +1100 |
---|---|---|
committer | James Morris <james.l.morris@oracle.com> | 2017-02-10 10:28:49 +1100 |
commit | a2a15479d617ebbab67c60b4eed02524536af780 (patch) | |
tree | 64c4a5bbf434b003f02f56edda845e89fd539a7a /fs/proc/base.c | |
parent | e2241be62deabe09d7c681326fcb0bc707082147 (diff) | |
parent | 1ea0ce40690dff38935538e8dab7b12683ded0d3 (diff) | |
download | op-kernel-dev-a2a15479d617ebbab67c60b4eed02524536af780.zip op-kernel-dev-a2a15479d617ebbab67c60b4eed02524536af780.tar.gz |
Merge branch 'stable-4.11' of git://git.infradead.org/users/pcmoore/selinux into next
Diffstat (limited to 'fs/proc/base.c')
-rw-r--r-- | fs/proc/base.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c index 8e7e61b..988c5a7 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -2488,6 +2488,12 @@ static ssize_t proc_pid_attr_write(struct file * file, const char __user * buf, length = -ESRCH; if (!task) goto out_no_task; + + /* A task may only write its own attributes. */ + length = -EACCES; + if (current != task) + goto out; + if (count > PAGE_SIZE) count = PAGE_SIZE; @@ -2503,14 +2509,13 @@ static ssize_t proc_pid_attr_write(struct file * file, const char __user * buf, } /* Guard against adverse ptrace interaction */ - length = mutex_lock_interruptible(&task->signal->cred_guard_mutex); + length = mutex_lock_interruptible(¤t->signal->cred_guard_mutex); if (length < 0) goto out_free; - length = security_setprocattr(task, - (char*)file->f_path.dentry->d_name.name, + length = security_setprocattr(file->f_path.dentry->d_name.name, page, count); - mutex_unlock(&task->signal->cred_guard_mutex); + mutex_unlock(¤t->signal->cred_guard_mutex); out_free: kfree(page); out: |