summaryrefslogtreecommitdiffstats
path: root/fs/proc/base.c
diff options
context:
space:
mode:
authorJames Morris <james.l.morris@oracle.com>2017-02-10 10:28:49 +1100
committerJames Morris <james.l.morris@oracle.com>2017-02-10 10:28:49 +1100
commita2a15479d617ebbab67c60b4eed02524536af780 (patch)
tree64c4a5bbf434b003f02f56edda845e89fd539a7a /fs/proc/base.c
parente2241be62deabe09d7c681326fcb0bc707082147 (diff)
parent1ea0ce40690dff38935538e8dab7b12683ded0d3 (diff)
downloadop-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.c13
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(&current->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(&current->signal->cred_guard_mutex);
out_free:
kfree(page);
out:
OpenPOWER on IntegriCloud