Patch "perf probe: Use existing routine to look for a kernel module by dso->short_name" has been added to the 4.2-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
perf probe: Use existing routine to look for a kernel module by dso->short_name
to the 4.2-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
perf-probe-use-existing-routine-to-look-for-a-kernel-module-by-dso-short_name.patch
and it can be found in the queue-4.2 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
266fa2b22294909ddf6e7d2f8acfe07adf9fd978Mon Sep 17 00:00:00 2001
From: Arnaldo Carvalho de Melo <[email protected]>
Date: Thu, 24 Sep 2015 11:24:18 -0300
Subject: perf probe: Use existing routine to look for a kernel module by dso->short_name
From: Arnaldo Carvalho de Melo <[email protected]>
commit 266fa2b22294909ddf6e7d2f8acfe07adf9fd978 upstream.
We have map_groups__find_by_name() to look at the list of modules that are in place for a given machine, so use it instead of traversing the machine dso list, which also includes DSOs for userspace.
When merging the user and kernel DSO lists a bug was introduced where 'perf probe' stopped being able to add probes to modules using its short name:
# perf probe -m usbnet --add usbnet_start_xmit
usbnet_start_xmit is out of .text, skip it.
Error: Failed to add events.
#With this fix it works again:
# perf probe -m usbnet --add usbnet_start_xmit
Added new event:
probe:usbnet_start_xmit (on usbnet_start_xmit in usbnet)You can now use it in all perf tools, such as:
perf record -e probe:usbnet_start_xmit -aR sleep 1
#
--- tools/perf/util/probe-event.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
tools/perf/util/probe-event.c +7 -6
@@ -274,12 +274,13 @@ static int kernel_get_module_dso(const cint ret =0 ;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; +char module_name[128 ]; + +snprintf (module_name,sizeof (module_name),"[%s]" , module); + map =map_groups__find_by_name (&host_machine->kmaps,MAP__FUNCTION , module_name); +if (map) { + dso = map->dso; + goto found; }pr_debug ("Failed to find module %s.\n" , module);return -ENOENT ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.2/perf-tools-add-empty-build-files-for-architectures-lacking-them.patch queue-4.2/perf-stat-get-correct-cpu-id-for-print_aggr.patch queue-4.2/perf-probe-use-existing-routine-to-look-for-a-kernel-module-by-dso-short_name.patch queue-4.2/perf-tools-add-missing-forward-declaration-of-struct-map-to-probe-event.h.patch queue-4.2/perf-tools-fix-copying-of-proc-kcore.patch queue-4.2/perf-hists-update-the-column-width-for-the-srcline-sort-key.patch queue-4.2/perf-tools-fix-parse_events_add_pmu-caller.patch queue-4.2/perf-header-fixup-reading-of-header_nrcpus-feature.patch