All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf synthetic events: Avoid write of uninitialized memory.
@ 2021-03-09 23:49 Ian Rogers
  2021-03-10 11:48 ` Jiri Olsa
  0 siblings, 1 reply; 3+ messages in thread
From: Ian Rogers @ 2021-03-09 23:49 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	linux-kernel
  Cc: Stephane Eranian, Ian Rogers

Account for alignment bytes in the zero-ing memset.

Signed-off-by: Ian Rogers <irogers@google.com>
---
 tools/perf/util/synthetic-events.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/tools/perf/util/synthetic-events.c b/tools/perf/util/synthetic-events.c
index b698046ec2db..31bf3dd6a1e0 100644
--- a/tools/perf/util/synthetic-events.c
+++ b/tools/perf/util/synthetic-events.c
@@ -424,7 +424,7 @@ int perf_event__synthesize_mmap_events(struct perf_tool *tool,
 
 	while (!io.eof) {
 		static const char anonstr[] = "//anon";
-		size_t size;
+		size_t size, aligned_size;
 
 		/* ensure null termination since stack will be reused. */
 		event->mmap2.filename[0] = '\0';
@@ -484,11 +484,12 @@ int perf_event__synthesize_mmap_events(struct perf_tool *tool,
 		}
 
 		size = strlen(event->mmap2.filename) + 1;
-		size = PERF_ALIGN(size, sizeof(u64));
+		aligned_size = PERF_ALIGN(size, sizeof(u64));
 		event->mmap2.len -= event->mmap.start;
 		event->mmap2.header.size = (sizeof(event->mmap2) -
-					(sizeof(event->mmap2.filename) - size));
-		memset(event->mmap2.filename + size, 0, machine->id_hdr_size);
+					(sizeof(event->mmap2.filename) - aligned_size));
+		memset(event->mmap2.filename + size, 0, machine->id_hdr_size +
+			(aligned_size - size));
 		event->mmap2.header.size += machine->id_hdr_size;
 		event->mmap2.pid = tgid;
 		event->mmap2.tid = pid;
-- 
2.30.1.766.gb4fecdf3b7-goog


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] perf synthetic events: Avoid write of uninitialized memory.
  2021-03-09 23:49 [PATCH] perf synthetic events: Avoid write of uninitialized memory Ian Rogers
@ 2021-03-10 11:48 ` Jiri Olsa
  2021-03-10 13:13   ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 3+ messages in thread
From: Jiri Olsa @ 2021-03-10 11:48 UTC (permalink / raw)
  To: Ian Rogers
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Namhyung Kim, linux-kernel,
	Stephane Eranian

On Tue, Mar 09, 2021 at 03:49:45PM -0800, Ian Rogers wrote:
> Account for alignment bytes in the zero-ing memset.
> 
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
>  tools/perf/util/synthetic-events.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/tools/perf/util/synthetic-events.c b/tools/perf/util/synthetic-events.c
> index b698046ec2db..31bf3dd6a1e0 100644
> --- a/tools/perf/util/synthetic-events.c
> +++ b/tools/perf/util/synthetic-events.c
> @@ -424,7 +424,7 @@ int perf_event__synthesize_mmap_events(struct perf_tool *tool,
>  
>  	while (!io.eof) {
>  		static const char anonstr[] = "//anon";
> -		size_t size;
> +		size_t size, aligned_size;
>  
>  		/* ensure null termination since stack will be reused. */
>  		event->mmap2.filename[0] = '\0';
> @@ -484,11 +484,12 @@ int perf_event__synthesize_mmap_events(struct perf_tool *tool,
>  		}
>  
>  		size = strlen(event->mmap2.filename) + 1;
> -		size = PERF_ALIGN(size, sizeof(u64));
> +		aligned_size = PERF_ALIGN(size, sizeof(u64));
>  		event->mmap2.len -= event->mmap.start;
>  		event->mmap2.header.size = (sizeof(event->mmap2) -
> -					(sizeof(event->mmap2.filename) - size));
> -		memset(event->mmap2.filename + size, 0, machine->id_hdr_size);
> +					(sizeof(event->mmap2.filename) - aligned_size));
> +		memset(event->mmap2.filename + size, 0, machine->id_hdr_size +
> +			(aligned_size - size));

so we did not zero the extra alignment bytes, nice ;-) looks good

Acked-by: Jiri Olsa <jolsa@redhat.com>

thanks,
jirka

>  		event->mmap2.header.size += machine->id_hdr_size;
>  		event->mmap2.pid = tgid;
>  		event->mmap2.tid = pid;
> -- 
> 2.30.1.766.gb4fecdf3b7-goog
> 


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] perf synthetic events: Avoid write of uninitialized memory.
  2021-03-10 11:48 ` Jiri Olsa
@ 2021-03-10 13:13   ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 3+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-03-10 13:13 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: Ian Rogers, Peter Zijlstra, Ingo Molnar, Mark Rutland,
	Alexander Shishkin, Namhyung Kim, linux-kernel, Stephane Eranian

Em Wed, Mar 10, 2021 at 12:48:36PM +0100, Jiri Olsa escreveu:
> On Tue, Mar 09, 2021 at 03:49:45PM -0800, Ian Rogers wrote:
> > Account for alignment bytes in the zero-ing memset.
> > 
> > Signed-off-by: Ian Rogers <irogers@google.com>
> > ---
> >  tools/perf/util/synthetic-events.c | 9 +++++----
> >  1 file changed, 5 insertions(+), 4 deletions(-)
> > 
> > diff --git a/tools/perf/util/synthetic-events.c b/tools/perf/util/synthetic-events.c
> > index b698046ec2db..31bf3dd6a1e0 100644
> > --- a/tools/perf/util/synthetic-events.c
> > +++ b/tools/perf/util/synthetic-events.c
> > @@ -424,7 +424,7 @@ int perf_event__synthesize_mmap_events(struct perf_tool *tool,
> >  
> >  	while (!io.eof) {
> >  		static const char anonstr[] = "//anon";
> > -		size_t size;
> > +		size_t size, aligned_size;
> >  
> >  		/* ensure null termination since stack will be reused. */
> >  		event->mmap2.filename[0] = '\0';
> > @@ -484,11 +484,12 @@ int perf_event__synthesize_mmap_events(struct perf_tool *tool,
> >  		}
> >  
> >  		size = strlen(event->mmap2.filename) + 1;
> > -		size = PERF_ALIGN(size, sizeof(u64));
> > +		aligned_size = PERF_ALIGN(size, sizeof(u64));
> >  		event->mmap2.len -= event->mmap.start;
> >  		event->mmap2.header.size = (sizeof(event->mmap2) -
> > -					(sizeof(event->mmap2.filename) - size));
> > -		memset(event->mmap2.filename + size, 0, machine->id_hdr_size);
> > +					(sizeof(event->mmap2.filename) - aligned_size));
> > +		memset(event->mmap2.filename + size, 0, machine->id_hdr_size +
> > +			(aligned_size - size));
> 
> so we did not zero the extra alignment bytes, nice ;-) looks good
> 
> Acked-by: Jiri Olsa <jolsa@redhat.com>

That is really old:

Fixes: 1a853e36871b533c ("perf record: Allow specifying a pid to record")

Circa 2009, the PERF_RECORD_COMM is ok as TASK_COMM_LEN is 16.

But I think there are other places synthesizing PERF_RECORD_MMAP,
jitdump maybe:

tools/perf/bench/inject-buildid.c, but it uses memset to zero the whole
union, no problem.

tools/perf/util/jitdump.c
jit_repipe_code_load() but it uses calloc to allocate the union
perf_event, so no problem as well.

Thanks, applied.

- Arnaldo

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-03-10 13:14 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-09 23:49 [PATCH] perf synthetic events: Avoid write of uninitialized memory Ian Rogers
2021-03-10 11:48 ` Jiri Olsa
2021-03-10 13:13   ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.