aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMárton Németh <nm127@freemail.hu>2009-11-21 17:10:15 -0500
committerIngo Molnar <mingo@elte.hu>2009-11-22 03:49:26 -0500
commit96b02d78a7e47cd189f6b307c5513fec6b2155dc (patch)
tree0bdd5060e9a01366cc2fab1ae8359743ad15e77d
parent5093ebad5f2348076fdc3dac7d2358b1ad7f85f7 (diff)
perf_event: Remove redundant zero fill
The buffer is first zeroed out by memset(). Then strncpy() is used to fill the content. The strncpy() function also pads the string till the end of the specified length, which is redundant. The strncpy() does not ensures that the string will be properly closed with 0. Use strlcpy() instead. The semantic match that finds this kind of pattern is as follows: (http://coccinelle.lip6.fr/) // <smpl> @@ expression buffer; expression size; expression str; @@ memset(buffer, 0, size); ... - strncpy( + strlcpy( buffer, str, sizeof(buffer) ); @@ expression buffer; expression size; expression str; @@ memset(&buffer, 0, size); ... - strncpy( + strlcpy( &buffer, str, sizeof(buffer)); @@ expression buffer; identifier field; expression size; expression str; @@ memset(buffer, 0, size); ... - strncpy( + strlcpy( buffer->field, str, sizeof(buffer->field) ); @@ expression buffer; identifier field; expression size; expression str; @@ memset(&buffer, 0, size); ... - strncpy( + strlcpy( buffer.field, str, sizeof(buffer.field)); // </smpl> On strncpy() vs strlcpy() see http://www.gratisoft.us/todd/papers/strlcpy.html . Signed-off-by: Márton Németh <nm127@freemail.hu> Cc: Julia Lawall <julia@diku.dk> Cc: cocci@diku.dk Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> LKML-Reference: <4B086547.5040100@freemail.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--kernel/perf_event.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/perf_event.c b/kernel/perf_event.c
index aba822722300..b26cb03c1914 100644
--- a/kernel/perf_event.c
+++ b/kernel/perf_event.c
@@ -3391,7 +3391,7 @@ static void perf_event_comm_event(struct perf_comm_event *comm_event)
3391 char comm[TASK_COMM_LEN]; 3391 char comm[TASK_COMM_LEN];
3392 3392
3393 memset(comm, 0, sizeof(comm)); 3393 memset(comm, 0, sizeof(comm));
3394 strncpy(comm, comm_event->task->comm, sizeof(comm)); 3394 strlcpy(comm, comm_event->task->comm, sizeof(comm));
3395 size = ALIGN(strlen(comm)+1, sizeof(u64)); 3395 size = ALIGN(strlen(comm)+1, sizeof(u64));
3396 3396
3397 comm_event->comm = comm; 3397 comm_event->comm = comm;