Commit ddc0ec3be8077a689e0136c873519bf851a741e6
Committed by
Greg Kroah-Hartman
1 parent
d8086c3bd3
Exists in
smarct4x-processor-sdk-04.01.00.06
and in
1 other branch
perf symbols: Robustify reading of build-id from sysfs
[ Upstream commit 7934c98a6e04028eb34c1293bfb5a6b0ab630b66 ] Markus reported that perf segfaults when reading /sys/kernel/notes from a kernel linked with GNU gold, due to what looks like a gold bug, so do some bounds checking to avoid crashing in that case. Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de> Report-Link: http://lkml.kernel.org/r/20161219161821.GA294@x4 Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-ryhgs6a6jxvz207j2636w31c@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Sasha Levin <alexander.levin@verizon.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Showing 1 changed file with 6 additions and 0 deletions Side-by-side Diff
tools/perf/util/symbol-elf.c
... | ... | @@ -537,6 +537,12 @@ |
537 | 537 | break; |
538 | 538 | } else { |
539 | 539 | int n = namesz + descsz; |
540 | + | |
541 | + if (n > (int)sizeof(bf)) { | |
542 | + n = sizeof(bf); | |
543 | + pr_debug("%s: truncating reading of build id in sysfs file %s: n_namesz=%u, n_descsz=%u.\n", | |
544 | + __func__, filename, nhdr.n_namesz, nhdr.n_descsz); | |
545 | + } | |
540 | 546 | if (read(fd, bf, n) != n) |
541 | 547 | break; |
542 | 548 | } |