summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@redhat.com>2013-05-01 02:28:19 +0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-05-01 04:04:07 +0400
commit12eaaf309a798973d215f7f21aa5a67a760ed7c8 (patch)
tree6be40c0ec42f7cf8eb5d09c31e1f36cc21499720
parent830e0fc967a7ee5013d5d1cf6a3cea71a8868466 (diff)
downloadlinux-12eaaf309a798973d215f7f21aa5a67a760ed7c8.tar.xz
set_task_comm: kill the pointless memset() + wmb()
set_task_comm() does memset() + wmb() before strlcpy(). This buys nothing and to add to the confusion, the comment is wrong. - We do not need memset() to be "safe from non-terminating string reads", the final char is always zero and we never change it. - wmb() is paired with nothing, it cannot prevent from printing the mixture of the old/new data unless the reader takes the lock. Signed-off-by: Oleg Nesterov <oleg@redhat.com> Cc: Andi Kleen <andi@firstfloor.org> Cc: John Stultz <johnstul@us.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--fs/exec.c10
1 files changed, 0 insertions, 10 deletions
diff --git a/fs/exec.c b/fs/exec.c
index 87e731f020fb..260f89f66651 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -1027,17 +1027,7 @@ EXPORT_SYMBOL_GPL(get_task_comm);
void set_task_comm(struct task_struct *tsk, char *buf)
{
task_lock(tsk);
-
trace_task_rename(tsk, buf);
-
- /*
- * Threads may access current->comm without holding
- * the task lock, so write the string carefully.
- * Readers without a lock may see incomplete new
- * names but are safe from non-terminating string reads.
- */
- memset(tsk->comm, 0, TASK_COMM_LEN);
- wmb();
strlcpy(tsk->comm, buf, sizeof(tsk->comm));
task_unlock(tsk);
perf_event_comm(tsk);