All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Masami Hiramatsu <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: adrian.hunter@intel.com, linux-kernel@vger.kernel.org,
	masami.hiramatsu.pt@hitachi.com, acme@redhat.com, hpa@zytor.com,
	mingo@kernel.org, a.p.zijlstra@chello.nl, tglx@linutronix.de,
	namhyung@kernel.org, jolsa@redhat.com
Subject: [tip:perf/core] perf tools: Fix machine__create_kernel_maps to put kernel dso refcount
Date: Mon, 23 Nov 2015 08:12:46 -0800	[thread overview]
Message-ID: <tip-1154c957607afdf5936ae14e1be27d7ca4e7bd30@git.kernel.org> (raw)
In-Reply-To: <20151118064033.30709.98954.stgit@localhost.localdomain>

Commit-ID:  1154c957607afdf5936ae14e1be27d7ca4e7bd30
Gitweb:     http://git.kernel.org/tip/1154c957607afdf5936ae14e1be27d7ca4e7bd30
Author:     Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
AuthorDate: Wed, 18 Nov 2015 15:40:33 +0900
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Thu, 19 Nov 2015 13:19:21 -0300

perf tools: Fix machine__create_kernel_maps to put kernel dso refcount

Fix machine__create_kernel_maps() to put kernel dso because the dso has
been gotten via __machine__create_kernel_maps().

Refcnt debugger shows:
  ==== [0] ====
  Unreclaimed dso: 0x3036ab0
  Refcount +1 => 1 at
    ./perf(dso__new+0x1ff) [0x4a62df]
    ./perf(__dsos__addnew+0x29) [0x4a6e19]
    ./perf(dsos__findnew+0xd1) [0x4a7181]
    ./perf(machine__findnew_kernel+0x27) [0x4a5e17]
    ./perf() [0x4b8cf2]
    ./perf(machine__create_kernel_maps+0x28) [0x4bb428]
    ./perf(machine__new_host+0xfa) [0x4bb74a]
    ./perf(init_probe_symbol_maps+0x93) [0x506613]
    ./perf() [0x455ffa]
    ./perf(cmd_probe+0x6c) [0x4566bc]
    ./perf() [0x47abc5]
    ./perf(main+0x610) [0x421f90]
    /lib64/libc.so.6(__libc_start_main+0xf5) [0x7ffa6809eaf5]
    ./perf() [0x4220a9]
  [snip]
  Refcount +1 => 2 at
    ./perf(dsos__findnew+0x7e) [0x4a712e]
    ./perf(machine__findnew_kernel+0x27) [0x4a5e17]
    ./perf() [0x4b8cf2]
    ./perf(machine__create_kernel_maps+0x28) [0x4bb428]
    ./perf(machine__new_host+0xfa) [0x4bb74a]
    ./perf(init_probe_symbol_maps+0x93) [0x506613]
    ./perf() [0x455ffa]
    ./perf(cmd_probe+0x6c) [0x4566bc]
    ./perf() [0x47abc5]
    ./perf(main+0x610) [0x421f90]
    /lib64/libc.so.6(__libc_start_main+0xf5) [0x7ffa6809eaf5]
    ./perf() [0x4220a9]
  [snip]
  Refcount -1 => 1 at
    ./perf(dso__put+0x2f) [0x4a664f]
    ./perf(machine__delete+0xfe) [0x4b93ee]
    ./perf(exit_probe_symbol_maps+0x28) [0x5066b8]
    ./perf() [0x45628a]
    ./perf(cmd_probe+0x6c) [0x4566bc]
    ./perf() [0x47abc5]
    ./perf(main+0x610) [0x421f90]
    /lib64/libc.so.6(__libc_start_main+0xf5) [0x7ffa6809eaf5]
    ./perf() [0x4220a9]

Actually, dsos__findnew gets the dso before returning it, so the dso
user (in this case machine__create_kernel_maps) has to put the dso after
used.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20151118064033.30709.98954.stgit@localhost.localdomain
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/machine.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index a358771..0b4a05c 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -1088,11 +1088,14 @@ int machine__create_kernel_maps(struct machine *machine)
 	struct dso *kernel = machine__get_kernel(machine);
 	const char *name;
 	u64 addr = machine__get_running_kernel_start(machine, &name);
-	if (!addr)
+	int ret;
+
+	if (!addr || kernel == NULL)
 		return -1;
 
-	if (kernel == NULL ||
-	    __machine__create_kernel_maps(machine, kernel) < 0)
+	ret = __machine__create_kernel_maps(machine, kernel);
+	dso__put(kernel);
+	if (ret < 0)
 		return -1;
 
 	if (symbol_conf.use_modules && machine__create_modules(machine) < 0) {

  reply	other threads:[~2015-11-23 16:13 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-18  6:40 [PATCH perf/core 00/13] perf memory/refcnt leak fixes Masami Hiramatsu
2015-11-18  6:40 ` [PATCH perf/core 01/13] perf probe: Fix to free temporal Dwarf_Frame Masami Hiramatsu
2015-11-18 22:36   ` Arnaldo Carvalho de Melo
2015-11-18 23:32     ` Namhyung Kim
2015-11-19  3:12       ` 平松雅巳 / HIRAMATU,MASAMI
2015-11-20  1:46         ` Namhyung Kim
2015-11-23 16:10   ` [tip:perf/core] " tip-bot for Masami Hiramatsu
2015-11-18  6:40 ` [PATCH perf/core 02/13] perf: Make perf_exec_path always returns malloc'd string Masami Hiramatsu
2015-11-18  6:40 ` [PATCH perf/core 03/13] perf: Introduce generic refcount APIs with debug feature Masami Hiramatsu
2015-11-20  2:52   ` Namhyung Kim
2015-11-20  4:12     ` 平松雅巳 / HIRAMATU,MASAMI
2015-11-20  5:53       ` Namhyung Kim
2015-11-18  6:40 ` [PATCH perf/core 04/13] perf: make map to use refcnt Masami Hiramatsu
2015-11-18  6:40 ` [PATCH perf/core 05/13] perf: Fix machine__findnew_module_map to put registered map Masami Hiramatsu
2015-11-18 22:36   ` Arnaldo Carvalho de Melo
2015-11-23 16:10   ` [tip:perf/core] perf machine: " tip-bot for Masami Hiramatsu
2015-11-18  6:40 ` [PATCH perf/core 06/13] perf: Fix machine__destroy_kernel_maps to put vmlinux_maps Masami Hiramatsu
2015-11-18 22:38   ` Arnaldo Carvalho de Melo
2015-11-23 16:11   ` [tip:perf/core] perf machine: Fix machine__destroy_kernel_maps to drop vmlinux_maps references tip-bot for Masami Hiramatsu
2015-11-18  6:40 ` [PATCH perf/core 07/13] perf: Fix to destroy kernel maps when machine exits Masami Hiramatsu
2015-11-23 16:11   ` [tip:perf/core] perf machine: " tip-bot for Masami Hiramatsu
2015-11-18  6:40 ` [PATCH perf/core 08/13] perf: Fix to put new map after inserting to map_groups in dso__load_sym Masami Hiramatsu
2015-11-23 16:12   ` [tip:perf/core] perf tools: " tip-bot for Masami Hiramatsu
2015-11-18  6:40 ` [PATCH perf/core 09/13] perf: Make dso to use refcnt for debug Masami Hiramatsu
2015-11-18  6:40 ` [PATCH perf/core 10/13] perf: Fix __dsos__addnew to put dso after adding it to the list Masami Hiramatsu
2015-11-23 16:12   ` [tip:perf/core] perf tools: " tip-bot for Masami Hiramatsu
2015-11-18  6:40 ` [PATCH perf/core 11/13] perf: Fix machine__create_kernel_maps to put kernel dso Masami Hiramatsu
2015-11-23 16:12   ` tip-bot for Masami Hiramatsu [this message]
2015-11-18  6:40 ` [PATCH perf/core 12/13] perf: Fix machine__findnew_module_map to put dso Masami Hiramatsu
2015-11-23 16:13   ` [tip:perf/core] perf machine: " tip-bot for Masami Hiramatsu
2015-11-18  6:40 ` [PATCH perf/core 13/13] perf: Fix dso__load_sym " Masami Hiramatsu
2015-11-18 12:46 ` [PATCH perf/core 00/13] perf memory/refcnt leak fixes Arnaldo Carvalho de Melo
2015-11-19  2:56   ` 平松雅巳 / HIRAMATU,MASAMI

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=tip-1154c957607afdf5936ae14e1be27d7ca4e7bd30@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@redhat.com \
    --cc=adrian.hunter@intel.com \
    --cc=hpa@zytor.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=masami.hiramatsu.pt@hitachi.com \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.