From: Oleg Nesterov Date: Tue, 30 Apr 2013 22:28:19 +0000 (-0700) Subject: set_task_comm: kill the pointless memset() + wmb() X-Git-Tag: v3.10-rc1~143^2~36 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=12eaaf309a798973d215f7f21aa5a67a760ed7c8;p=profile%2Fivi%2Fkernel-x86-ivi.git 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 Cc: Andi Kleen Cc: John Stultz Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/fs/exec.c b/fs/exec.c index 87e731f020f..260f89f6665 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);