From: Olaf Kirch <okir@suse.de>

We received a bug report that /proc/PID/cmdline only shows argv[0] if the
total length of all arguments exceeds PAGE_SIZE.  The problem is that
proc_pid_cmdline checks for the presence of a NUL byte at the end of the
args list, and assumes that the application did a setproctitle if there's
any other character.

OTOH proc_pid_cmdline will read just the first PAGE_SIZE worth of arguments
at most, and if you have more arguments, it's quite likely that there won't
be a NUL byte at offset PAGE_SIZE-1.

The attached patch fixes this.

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/fs/proc/base.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

diff -puN fs/proc/base.c~proc-pid-cmdline-truncates-arguments-early fs/proc/base.c
--- 25/fs/proc/base.c~proc-pid-cmdline-truncates-arguments-early	2004-08-20 00:02:24.919767464 -0700
+++ 25-akpm/fs/proc/base.c	2004-08-20 00:02:24.923766856 -0700
@@ -365,7 +365,7 @@ static int proc_pid_cmdline(struct task_
 
 	// 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') {
+	if (res > 0 && buffer[res-1] != '\0' && len < PAGE_SIZE) {
 		len = strnlen(buffer, res);
 		if (len < res) {
 		    res = len;
_