summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorStephen Rothwell <sfr@canb.auug.org.au>2014-04-03 13:35:55 +1100
committerStephen Rothwell <sfr@canb.auug.org.au>2014-04-03 13:35:55 +1100
commit6af29beb9fac21e6a8a3b4d4b3c7d34d916391d0 (patch)
tree4629b693c98b933f8bec00c2c68da1d82faab0bb /fs
parentf1dacec12594c327cc25fe2c2785bae8b086eccb (diff)
parente231d54c1239ccf31aaee311bed0c4d1937cae2c (diff)
Merge remote-tracking branch 'audit/master'
Conflicts: arch/mips/include/asm/syscall.h arch/mips/kernel/ptrace.c arch/powerpc/Kconfig arch/x86/Kconfig init/Kconfig kernel/audit.c kernel/seccomp.c
Diffstat (limited to 'fs')
-rw-r--r--fs/proc/base.c36
1 files changed, 2 insertions, 34 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c
index b9760628e1fd..a9b591a29dcb 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -200,41 +200,9 @@ static int proc_root_link(struct dentry *dentry, struct path *path)
return result;
}
-static int proc_pid_cmdline(struct task_struct *task, char * buffer)
+static int proc_pid_cmdline(struct task_struct *task, char *buffer)
{
- int res = 0;
- unsigned int len;
- struct mm_struct *mm = get_task_mm(task);
- if (!mm)
- goto out;
- if (!mm->arg_end)
- goto out_mm; /* Shh! No looking before we're done */
-
- len = mm->arg_end - mm->arg_start;
-
- if (len > PAGE_SIZE)
- len = PAGE_SIZE;
-
- res = access_process_vm(task, mm->arg_start, buffer, len, 0);
-
- // If the nul at the end of args has been overwritten, then
- // assume application is using setproctitle(3).
- if (res > 0 && buffer[res-1] != '\0' && len < PAGE_SIZE) {
- len = strnlen(buffer, res);
- if (len < res) {
- res = len;
- } else {
- len = mm->env_end - mm->env_start;
- if (len > PAGE_SIZE - res)
- len = PAGE_SIZE - res;
- res += access_process_vm(task, mm->env_start, buffer+res, len, 0);
- res = strnlen(buffer, res);
- }
- }
-out_mm:
- mmput(mm);
-out:
- return res;
+ return get_cmdline(task, buffer, PAGE_SIZE);
}
static int proc_pid_auxv(struct task_struct *task, char *buffer)