Patch "perf probe: Fix --funcs to show correct symbols for offline module" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
perf probe: Fix --funcs to show correct symbols for offline module
to the 4.9-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-fix-funcs-to-show-correct-symbols-for-offline-module.patch
and it can be found in the queue-4.9 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
eebc509b20881b92d62e317b2c073e57c5f200f0Mon Sep 17 00:00:00 2001
From: Masami Hiramatsu <[email protected]>
Date: Wed, 4 Jan 2017 12:29:05 +0900
Subject: perf probe: Fix --funcs to show correct symbols for offline module
From: Masami Hiramatsu <[email protected]>
commit eebc509b20881b92d62e317b2c073e57c5f200f0 upstream.
Fix --funcs (-F) option to show correct symbols for offline module. Since previous perf-probe uses machine__findnew_module_map() for offline module, even if user passes a module file (with full path) which is for other architecture, perf-probe always tries to load symbol map for current kernel module.
This fix uses dso__new_map() to load the map from given binary as same as a map for user applications.
--- tools/perf/util/probe-event.c | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-)
tools/perf/util/probe-event.c +6 -19
@@ -163,7 +163,7 @@ static struct map *kernel_get_module_map/* A file path -- this is an offline module */ if (module &&strchr (module,'/' )) -return machine__findnew_module_map (host_machine,0 , module); +return dso__new_map (module);if (!module) module ="kernel" ;
@@ -173,6 +173,7 @@ static struct map *kernel_get_module_mapif (strncmp (pos->dso->short_name +1 , module, pos->dso->short_name_len -2 ) ==0 && module[pos->dso->short_name_len -2 ] =='\0' ) { +map__get (pos);return pos; } }
@@ -188,15 +189,6 @@ struct map *get_target_map(const char *treturn kernel_get_module_map (target); } -static void put_target_map (struct map *map,bool user) -{ -if (map && user) { -/* Only the user map needs to be released */ -map__put (map); - } -} - -static int convert_exec_to_group (const char *exec,char **result) {char *ptr1, *ptr2, *exec_copy;
@@ -412,7 +404,7 @@ static int find_alternative_probe_point( } out: -put_target_map (map, uprobes); +map__put (map);return ret; }
@@ -2944,7 +2936,7 @@ static int find_probe_trace_events_from_ } out: -put_target_map (map, pev->uprobes); +map__put (map);free (syms);return ret;
@@ -3437,10 +3429,7 @@ int show_available_funcs(const char *tarreturn ret;/* Get a symbol map */ -if (user) - map =dso__new_map (target); -else - map =kernel_get_module_map (target); + map =get_target_map (target, user);if (!map) {pr_err ("Failed to get a map for %s\n" , (target) ? :"kernel" );return -EINVAL ;
@@ -3472,9 +3461,7 @@ int show_available_funcs(const char *tar } end: -if (user) { -map__put (map); - } +map__put (map);exit_probe_symbol_maps ();return ret;
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/perf-probe-fix-funcs-to-show-correct-symbols-for-offline-module.patch