Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751832AbbGAJGw (ORCPT ); Wed, 1 Jul 2015 05:06:52 -0400 Received: from szxga01-in.huawei.com ([58.251.152.64]:27639 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753369AbbGAJG3 (ORCPT ); Wed, 1 Jul 2015 05:06:29 -0400 From: He Kuang To: , , , , , CC: , Subject: [PATCH 2/4] perf probe: Fix failure to probe online module Date: Wed, 1 Jul 2015 09:05:37 +0000 Message-ID: <1435741539-44100-2-git-send-email-hekuang@huawei.com> X-Mailer: git-send-email 1.8.3.4 In-Reply-To: <1435741539-44100-1-git-send-email-hekuang@huawei.com> References: <1435741539-44100-1-git-send-email-hekuang@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.107.197.210] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2503 Lines: 73 Kernel module has the type DSO_TYPE_USER, the check on dso type in kernel_get_module_dso() disable openning debuginfo of online kernel modules. Problem can be reproduced as: $ insmod test_bpf.ko $ perf probe -v -m test_bpf --add='skb_is_nonlinear' probe-definition(0): skb_is_nonlinear symbol:skb_is_nonlinear file:(null) line:0 offset:0 return:0 lazy:(null) 0 arguments Failed to find module test_bpf. Could not open debuginfo. Try to use symbols. Failed to find symbol skb_is_nonlinear in test_bpf Error: Failed to add events. Reason: No such file or directory (Code: -2) Infact kernel_get_module_dso() function is called in perf-probe, in this condition, machine->dsos list contains only dsos which is either kmod or kernel loaded by machine__create_kernel_maps(), so there's no need to pick away the non-kmod user type dsos. This patch removes the check. After this patch: $ perf probe -v -m test_bpf --add='skb_is_nonlinear' probe-definition(0): skb_is_nonlinear symbol:skb_is_nonlinear file:(null) line:0 offset:0 return:0 lazy:(null) 0 arguments Open Debuginfo file: /lib/modules/4.1.0+/test_bpf.ko Try to find probe point from debuginfo. Matched function: skb_is_nonlinear found inline addr: 0x10ab3 Probe point found: test_bpf_init+585 Found 1 probe_trace_events. Opening /sys/kernel/debug/tracing/kprobe_events write=1 Added new event: Writing event: p:probe/skb_is_nonlinear test_bpf:test_bpf_init+585 probe:skb_is_nonlinear (on skb_is_nonlinear in test_bpf) You can now use it in all perf tools, such as: perf record -e probe:skb_is_nonlinear -aR sleep 1 Signed-off-by: He Kuang --- tools/perf/util/probe-event.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c index 381f23a..8ad2743 100644 --- a/tools/perf/util/probe-event.c +++ b/tools/perf/util/probe-event.c @@ -275,8 +275,6 @@ static int kernel_get_module_dso(const char *module, struct dso **pdso) if (module) { list_for_each_entry(dso, &host_machine->dsos.head, node) { - if (!dso->kernel) - continue; if (strncmp(dso->short_name + 1, module, dso->short_name_len - 2) == 0) goto found; -- 1.8.5.2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/