]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit
perf script brstackinsn: Fix recovery from LBR/binary mismatch
authorAndi Kleen <ak@linux.intel.com>
Fri, 27 Sep 2019 23:35:44 +0000 (16:35 -0700)
committerKhalid Elmously <khalid.elmously@canonical.com>
Wed, 13 Nov 2019 23:47:34 +0000 (18:47 -0500)
commita95a7f72f2ae1716c11b2dfa59d9dd04a68f71a4
treee0a6d4de5d94089dcf9ff740779dd5b310eecdca
parent354787ece95305cff290bd823c0bf39e1c1ddb5b
perf script brstackinsn: Fix recovery from LBR/binary mismatch

BugLink: https://bugs.launchpad.net/bugs/1852492
[ Upstream commit e98df280bc2a499fd41d7f9e2d6733884de69902 ]

When the LBR data and the instructions in a binary do not match the loop
printing instructions could get confused and print a long stream of
bogus <bad> instructions.

The problem was that if the instruction decoder cannot decode an
instruction it ilen wasn't initialized, so the loop going through the
basic block would continue with the previous value.

Harden the code to avoid such problems:

- Make sure ilen is always freshly initialized and is 0 for bad
  instructions.

- Do not overrun the code buffer while printing instructions

- Print a warning message if the final jump is not on an instruction
  boundary.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Link: http://lore.kernel.org/lkml/20190927233546.11533-1-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
tools/perf/builtin-script.c