From bf36f91f08100b758a4f12811da05b9c1ce09c90 Mon Sep 17 00:00:00 2001
From: Prasanna Meda <pmeda@akamai.com>
Date: Tue, 11 Jan 2005 03:18:08 -0800
Subject: [PATCH] [PATCH] easily tweakable comm length

This change still keeps the comm length at 16, but allows easier patching
for local modifications, and also introduces a macro to use instead of
magic 16, where sizeof(comm) is not preferable to use.

Not able to use killall, pidof etc.  effectively, when long process names
are used for scripts.  Just changing the command length from 16 to 32
breaks a.out coredump logic.  Deamonise and get_task_comm helped in other
places in 2.6.10.

Signed-off-by: Prasanna Meda <pmeda@akamai.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
---
 arch/sparc64/kernel/binfmt_aout32.c | 2 +-
 fs/binfmt_aout.c                    | 2 +-
 include/linux/sched.h               | 5 ++++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/arch/sparc64/kernel/binfmt_aout32.c b/arch/sparc64/kernel/binfmt_aout32.c
index 64d547853b48..c54d806e13d2 100644
--- a/arch/sparc64/kernel/binfmt_aout32.c
+++ b/arch/sparc64/kernel/binfmt_aout32.c
@@ -95,7 +95,7 @@ static int aout32_core_dump(long signr, struct pt_regs *regs, struct file *file)
 	set_fs(KERNEL_DS);
 	has_dumped = 1;
 	current->flags |= PF_DUMPCORE;
-       	strncpy(dump.u_comm, current->comm, sizeof(current->comm));
+       	strncpy(dump.u_comm, current->comm, sizeof(dump.u_comm));
 	dump.signal = signr;
 	dump_thread(regs, &dump);
 
diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c
index acdd53848566..8075fdff2364 100644
--- a/fs/binfmt_aout.c
+++ b/fs/binfmt_aout.c
@@ -112,7 +112,7 @@ static int aout_core_dump(long signr, struct pt_regs * regs, struct file *file)
 	set_fs(KERNEL_DS);
 	has_dumped = 1;
 	current->flags |= PF_DUMPCORE;
-       	strncpy(dump.u_comm, current->comm, sizeof(current->comm));
+       	strncpy(dump.u_comm, current->comm, sizeof(dump.u_comm));
 #ifndef __sparc__
 	dump.u_ar0 = (void *)(((unsigned long)(&dump.regs)) - ((unsigned long)(&dump)));
 #endif
diff --git a/include/linux/sched.h b/include/linux/sched.h
index dcc1814f97e8..96f69aaa0534 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -121,6 +121,9 @@ extern unsigned long nr_iowait(void);
 #define set_current_state(state_value)		\
 	set_mb(current->state, (state_value))
 
+/* Task command name length */
+#define TASK_COMM_LEN 16
+
 /*
  * Scheduling policies
  */
@@ -612,7 +615,7 @@ struct task_struct {
 	struct key *thread_keyring;	/* keyring private to this thread */
 #endif
 	unsigned short used_math;
-	char comm[16];
+	char comm[TASK_COMM_LEN];
 /* file system info */
 	int link_count, total_link_count;
 /* ipc stuff */
-- 
2.30.9