All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] perf inject: Call dso__put() even if dso->hit is set
@ 2021-05-24 22:50 Namhyung Kim
  2021-05-24 22:50 ` [PATCH 2/2] perf inject: Do not inject BUILD_ID record if MMAP2 has it Namhyung Kim
  2021-05-26 12:13 ` [PATCH 1/2] perf inject: Call dso__put() even if dso->hit is set Jiri Olsa
  0 siblings, 2 replies; 4+ messages in thread
From: Namhyung Kim @ 2021-05-24 22:50 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Jiri Olsa
  Cc: Ingo Molnar, Peter Zijlstra, Mark Rutland, Alexander Shishkin,
	LKML, Andi Kleen, Ian Rogers

Otherwise it'll leak the refcount for the DSO.  As dso__put() can
handle a NULL dso pointer, we can just call it unconditionally.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/builtin-inject.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c
index 102cafb0c0b3..8bbaa46eb7e6 100644
--- a/tools/perf/builtin-inject.c
+++ b/tools/perf/builtin-inject.c
@@ -383,8 +383,8 @@ static int perf_event__repipe_buildid_mmap(struct perf_tool *tool,
 	if (dso && !dso->hit) {
 		dso->hit = 1;
 		dso__inject_build_id(dso, tool, machine, sample->cpumode, 0);
-		dso__put(dso);
 	}
+	dso__put(dso);
 
 	return perf_event__repipe(tool, event, sample, machine);
 }
@@ -447,8 +447,8 @@ static int perf_event__repipe_buildid_mmap2(struct perf_tool *tool,
 		dso->hit = 1;
 		dso__inject_build_id(dso, tool, machine, sample->cpumode,
 				     event->mmap2.flags);
-		dso__put(dso);
 	}
+	dso__put(dso);
 
 	perf_event__repipe(tool, event, sample, machine);
 
-- 
2.31.1.818.g46aad6cb9e-goog


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

* [PATCH 2/2] perf inject: Do not inject BUILD_ID record if MMAP2 has it
  2021-05-24 22:50 [PATCH 1/2] perf inject: Call dso__put() even if dso->hit is set Namhyung Kim
@ 2021-05-24 22:50 ` Namhyung Kim
  2021-05-26 12:13 ` [PATCH 1/2] perf inject: Call dso__put() even if dso->hit is set Jiri Olsa
  1 sibling, 0 replies; 4+ messages in thread
From: Namhyung Kim @ 2021-05-24 22:50 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Jiri Olsa
  Cc: Ingo Molnar, Peter Zijlstra, Mark Rutland, Alexander Shishkin,
	LKML, Andi Kleen, Ian Rogers

When PERF_RECORD_MISC_MMAP_BUILD_ID is set, the event has a build-id
of the DSO already so no need to add it again.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/builtin-inject.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c
index 8bbaa46eb7e6..5d6f583e2cd3 100644
--- a/tools/perf/builtin-inject.c
+++ b/tools/perf/builtin-inject.c
@@ -399,6 +399,18 @@ static int perf_event__repipe_mmap2(struct perf_tool *tool,
 	err = perf_event__process_mmap2(tool, event, sample, machine);
 	perf_event__repipe(tool, event, sample, machine);
 
+	if (event->header.misc & PERF_RECORD_MISC_MMAP_BUILD_ID) {
+		struct dso *dso;
+
+		dso = findnew_dso(event->mmap2.pid, event->mmap2.tid,
+				  event->mmap2.filename, NULL, machine);
+		if (dso) {
+			/* mark it not to inject build-id */
+			dso->hit = 1;
+		}
+		dso__put(dso);
+	}
+
 	return err;
 }
 
@@ -440,6 +452,18 @@ static int perf_event__repipe_buildid_mmap2(struct perf_tool *tool,
 	};
 	struct dso *dso;
 
+	if (event->header.misc & PERF_RECORD_MISC_MMAP_BUILD_ID) {
+		/* cannot use dso_id since it'd have invalid info */
+		dso = findnew_dso(event->mmap2.pid, event->mmap2.tid,
+				  event->mmap2.filename, NULL, machine);
+		if (dso) {
+			/* mark it not to inject build-id */
+			dso->hit = 1;
+		}
+		dso__put(dso);
+		return 0;
+	}
+
 	dso = findnew_dso(event->mmap2.pid, event->mmap2.tid,
 			  event->mmap2.filename, &dso_id, machine);
 
-- 
2.31.1.818.g46aad6cb9e-goog


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

* Re: [PATCH 1/2] perf inject: Call dso__put() even if dso->hit is set
  2021-05-24 22:50 [PATCH 1/2] perf inject: Call dso__put() even if dso->hit is set Namhyung Kim
  2021-05-24 22:50 ` [PATCH 2/2] perf inject: Do not inject BUILD_ID record if MMAP2 has it Namhyung Kim
@ 2021-05-26 12:13 ` Jiri Olsa
  2021-05-26 12:39   ` Arnaldo Carvalho de Melo
  1 sibling, 1 reply; 4+ messages in thread
From: Jiri Olsa @ 2021-05-26 12:13 UTC (permalink / raw)
  To: Namhyung Kim
  Cc: Arnaldo Carvalho de Melo, Ingo Molnar, Peter Zijlstra,
	Mark Rutland, Alexander Shishkin, LKML, Andi Kleen, Ian Rogers

On Mon, May 24, 2021 at 03:50:50PM -0700, Namhyung Kim wrote:
> Otherwise it'll leak the refcount for the DSO.  As dso__put() can
> handle a NULL dso pointer, we can just call it unconditionally.
> 
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>

for the patchset

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

thanks,
jirka

> ---
>  tools/perf/builtin-inject.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c
> index 102cafb0c0b3..8bbaa46eb7e6 100644
> --- a/tools/perf/builtin-inject.c
> +++ b/tools/perf/builtin-inject.c
> @@ -383,8 +383,8 @@ static int perf_event__repipe_buildid_mmap(struct perf_tool *tool,
>  	if (dso && !dso->hit) {
>  		dso->hit = 1;
>  		dso__inject_build_id(dso, tool, machine, sample->cpumode, 0);
> -		dso__put(dso);
>  	}
> +	dso__put(dso);
>  
>  	return perf_event__repipe(tool, event, sample, machine);
>  }
> @@ -447,8 +447,8 @@ static int perf_event__repipe_buildid_mmap2(struct perf_tool *tool,
>  		dso->hit = 1;
>  		dso__inject_build_id(dso, tool, machine, sample->cpumode,
>  				     event->mmap2.flags);
> -		dso__put(dso);
>  	}
> +	dso__put(dso);
>  
>  	perf_event__repipe(tool, event, sample, machine);
>  
> -- 
> 2.31.1.818.g46aad6cb9e-goog
> 


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

* Re: [PATCH 1/2] perf inject: Call dso__put() even if dso->hit is set
  2021-05-26 12:13 ` [PATCH 1/2] perf inject: Call dso__put() even if dso->hit is set Jiri Olsa
@ 2021-05-26 12:39   ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 4+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-05-26 12:39 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: Namhyung Kim, Ingo Molnar, Peter Zijlstra, Mark Rutland,
	Alexander Shishkin, LKML, Andi Kleen, Ian Rogers

Em Wed, May 26, 2021 at 02:13:43PM +0200, Jiri Olsa escreveu:
> On Mon, May 24, 2021 at 03:50:50PM -0700, Namhyung Kim wrote:
> > Otherwise it'll leak the refcount for the DSO.  As dso__put() can
> > handle a NULL dso pointer, we can just call it unconditionally.
> > 
> > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> 
> for the patchset
> 
> Acked-by: Jiri Olsa <jolsa@redhat.com>

Thanks, applied.

- Arnaldo

 
> thanks,
> jirka
> 
> > ---
> >  tools/perf/builtin-inject.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c
> > index 102cafb0c0b3..8bbaa46eb7e6 100644
> > --- a/tools/perf/builtin-inject.c
> > +++ b/tools/perf/builtin-inject.c
> > @@ -383,8 +383,8 @@ static int perf_event__repipe_buildid_mmap(struct perf_tool *tool,
> >  	if (dso && !dso->hit) {
> >  		dso->hit = 1;
> >  		dso__inject_build_id(dso, tool, machine, sample->cpumode, 0);
> > -		dso__put(dso);
> >  	}
> > +	dso__put(dso);
> >  
> >  	return perf_event__repipe(tool, event, sample, machine);
> >  }
> > @@ -447,8 +447,8 @@ static int perf_event__repipe_buildid_mmap2(struct perf_tool *tool,
> >  		dso->hit = 1;
> >  		dso__inject_build_id(dso, tool, machine, sample->cpumode,
> >  				     event->mmap2.flags);
> > -		dso__put(dso);
> >  	}
> > +	dso__put(dso);
> >  
> >  	perf_event__repipe(tool, event, sample, machine);
> >  
> > -- 
> > 2.31.1.818.g46aad6cb9e-goog
> > 
> 

-- 

- Arnaldo

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

end of thread, other threads:[~2021-05-26 12:39 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-24 22:50 [PATCH 1/2] perf inject: Call dso__put() even if dso->hit is set Namhyung Kim
2021-05-24 22:50 ` [PATCH 2/2] perf inject: Do not inject BUILD_ID record if MMAP2 has it Namhyung Kim
2021-05-26 12:13 ` [PATCH 1/2] perf inject: Call dso__put() even if dso->hit is set Jiri Olsa
2021-05-26 12:39   ` 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.