On x86, page_fault_* tracepoints report userspace address via kernel
symbols because all the per-cpu variable offsets are in kallsyms,
occupying the lower address space. Fix this by skipping over absolute
addresses while processing kallsyms.

Signed-off-by: Jan Kiszka <jan.kis...@siemens.com>
---
 trace-util.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/trace-util.c b/trace-util.c
index 8a81dd0..da20e4c 100644
--- a/trace-util.c
+++ b/trace-util.c
@@ -434,8 +434,12 @@ void parse_proc_kallsyms(struct pevent *pevent,
                if (mod)
                        mod[strlen(mod) - 1] = 0;
 
-               /* Hack for arm arch that adds a lot of bogus '$a' functions */
-               if (func[0] != '$')
+               /*
+                * Hacks for
+                *  - arm arch that adds a lot of bogus '$a' functions
+                *  - x86-64 that reports per-cpu variable offsets as absolute
+                */
+               if (func[0] != '$' && ch != 'A')
                        pevent_register_function(pevent, func, addr, mod);
                free(func);
                free(mod);
-- 
2.1.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to