From d49f0b14867f0a6527de4d7a553e4b26150ff297 Mon Sep 17 00:00:00 2001 From: David Howells Date: Fri, 8 May 2009 13:55:27 +0100 Subject: [PATCH] --- yaml --- r: 146423 b: refs/heads/master c: 107db7c7dd137aeb7361b8c2606ac936c0be58ff h: refs/heads/master i: 146421: d107fcf20faec76fe885b318d7cb513024128a5a 146419: 0b0b81357537035e82c3dbe2cecaa886f1ecb1d8 146415: 7c5f48eca7fc423c1194aef4fcfef66d8a3f8f30 v: v3 --- [refs] | 2 +- trunk/fs/proc/base.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 604f2900c14b..b65dc1afe787 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5e751e992f3fb08ba35e1ca8095ec8fbf9eda523 +refs/heads/master: 107db7c7dd137aeb7361b8c2606ac936c0be58ff diff --git a/trunk/fs/proc/base.c b/trunk/fs/proc/base.c index fb45615943c2..23342e188a66 100644 --- a/trunk/fs/proc/base.c +++ b/trunk/fs/proc/base.c @@ -2128,9 +2128,15 @@ static ssize_t proc_pid_attr_write(struct file * file, const char __user * buf, if (copy_from_user(page, buf, count)) goto out_free; + /* Guard against adverse ptrace interaction */ + length = mutex_lock_interruptible(&task->cred_guard_mutex); + if (length < 0) + goto out_free; + length = security_setprocattr(task, (char*)file->f_path.dentry->d_name.name, (void*)page, count); + mutex_unlock(&task->cred_guard_mutex); out_free: free_page((unsigned long) page); out: