linux-kernel.vger.kernel.org archive mirror
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).