Revision 3f938ee2f6c4fff8d95b24636a0964b5a93cf547 authored by Jiri Olsa on 26 June 2017, 09:51:53 UTC, committed by Arnaldo Carvalho de Melo on 26 June 2017, 14:52:37 UTC
Michael reported the segfault when kernel.kptr_restrict=2 is set. $ perf record ls ... perf: Segmentation fault Obtained 16 stack frames. ./perf(dump_stack+0x2d) [0x5068df] ./perf(sighandler_dump_stack+0x2d) [0x5069bf] ./perf() [0x43e47b] /lib64/libc.so.6(+0x3594f) [0x7f762004794f] /lib64/libc.so.6(strlen+0x26) [0x7f762009ef86] /lib64/libc.so.6(__strdup+0xd) [0x7f762009ecbd] ./perf(maps__set_kallsyms_ref_reloc_sym+0x4d) [0x51590f] ./perf(machine__create_kernel_maps+0x136) [0x50a7de] ./perf(perf_session__create_kernel_maps+0x2c) [0x510a81] ./perf(perf_session__new+0x13d) [0x510e23] ./perf() [0x43fd61] ./perf(cmd_record+0x704) [0x441823] ./perf() [0x4bc1a0] ./perf() [0x4bc40d] ./perf() [0x4bc55f] ./perf(main+0x2d5) [0x4bc939] Segmentation fault (core dumped) The reason is that with kernel.kptr_restrict=2, we don't get the symbol from machine__get_running_kernel_start, which we want to use in maps__set_kallsyms_ref_reloc_sym and we crash. Check the symbol name value before calling maps__set_kallsyms_ref_reloc_sym() and succeed without ref_reloc_sym being set. It's safe because we check its existence before we use it. Reported-by: Michael Petlan <mpetlan@redhat.com> Signed-off-by: Jiri Olsa <jolsa@kernel.org> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/20170626095153.553-1-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
1 parent 977282e
File | Mode | Size |
---|---|---|
bitops | ||
4level-fixup.h | -rw-r--r-- | 1.0 KB |
5level-fixup.h | -rw-r--r-- | 1.1 KB |
asm-offsets.h | -rw-r--r-- | 35 bytes |
asm-prototypes.h | -rw-r--r-- | 468 bytes |
atomic-long.h | -rw-r--r-- | 6.8 KB |
atomic.h | -rw-r--r-- | 5.1 KB |
atomic64.h | -rw-r--r-- | 2.2 KB |
audit_change_attr.h | -rw-r--r-- | 445 bytes |
audit_dir_write.h | -rw-r--r-- | 416 bytes |
audit_read.h | -rw-r--r-- | 202 bytes |
audit_signal.h | -rw-r--r-- | 36 bytes |
audit_write.h | -rw-r--r-- | 377 bytes |
barrier.h | -rw-r--r-- | 5.6 KB |
bitops.h | -rw-r--r-- | 1.1 KB |
bitsperlong.h | -rw-r--r-- | 553 bytes |
bug.h | -rw-r--r-- | 6.4 KB |
bugs.h | -rw-r--r-- | 228 bytes |
cache.h | -rw-r--r-- | 345 bytes |
cacheflush.h | -rw-r--r-- | 1.3 KB |
checksum.h | -rw-r--r-- | 2.2 KB |
clkdev.h | -rw-r--r-- | 706 bytes |
cmpxchg-local.h | -rw-r--r-- | 1.4 KB |
cmpxchg.h | -rw-r--r-- | 2.2 KB |
current.h | -rw-r--r-- | 217 bytes |
delay.h | -rw-r--r-- | 1.1 KB |
device.h | -rw-r--r-- | 245 bytes |
div64.h | -rw-r--r-- | 6.9 KB |
dma-contiguous.h | -rw-r--r-- | 199 bytes |
dma.h | -rw-r--r-- | 514 bytes |
early_ioremap.h | -rw-r--r-- | 1.5 KB |
emergency-restart.h | -rw-r--r-- | 209 bytes |
exec.h | -rw-r--r-- | 697 bytes |
export.h | -rw-r--r-- | 2.2 KB |
extable.h | -rw-r--r-- | 763 bytes |
fb.h | -rw-r--r-- | 232 bytes |
fixmap.h | -rw-r--r-- | 2.8 KB |
ftrace.h | -rw-r--r-- | 460 bytes |
futex.h | -rw-r--r-- | 3.7 KB |
getorder.h | -rw-r--r-- | 1.4 KB |
gpio.h | -rw-r--r-- | 4.4 KB |
hardirq.h | -rw-r--r-- | 493 bytes |
hugetlb.h | -rw-r--r-- | 758 bytes |
hw_irq.h | -rw-r--r-- | 270 bytes |
ide_iops.h | -rw-r--r-- | 752 bytes |
int-ll64.h | -rw-r--r-- | 893 bytes |
io.h | -rw-r--r-- | 19.6 KB |
ioctl.h | -rw-r--r-- | 467 bytes |
iomap.h | -rw-r--r-- | 3.1 KB |
irq.h | -rw-r--r-- | 364 bytes |
irq_regs.h | -rw-r--r-- | 980 bytes |
irq_work.h | -rw-r--r-- | 155 bytes |
irqflags.h | -rw-r--r-- | 1.5 KB |
kdebug.h | -rw-r--r-- | 143 bytes |
kmap_types.h | -rw-r--r-- | 159 bytes |
kprobes.h | -rw-r--r-- | 829 bytes |
kvm_para.h | -rw-r--r-- | 441 bytes |
linkage.h | -rw-r--r-- | 225 bytes |
local.h | -rw-r--r-- | 2.2 KB |
local64.h | -rw-r--r-- | 3.8 KB |
mcs_spinlock.h | -rw-r--r-- | 260 bytes |
memory_model.h | -rw-r--r-- | 2.1 KB |
mm-arch-hooks.h | -rw-r--r-- | 388 bytes |
mm_hooks.h | -rw-r--r-- | 837 bytes |
mmu.h | -rw-r--r-- | 410 bytes |
mmu_context.h | -rw-r--r-- | 842 bytes |
module.h | -rw-r--r-- | 1.1 KB |
msi.h | -rw-r--r-- | 799 bytes |
page.h | -rw-r--r-- | 2.4 KB |
param.h | -rw-r--r-- | 328 bytes |
parport.h | -rw-r--r-- | 565 bytes |
pci.h | -rw-r--r-- | 542 bytes |
pci_iomap.h | -rw-r--r-- | 2.0 KB |
percpu.h | -rw-r--r-- | 12.2 KB |
pgalloc.h | -rw-r--r-- | 303 bytes |
pgtable-nop4d-hack.h | -rw-r--r-- | 1.8 KB |
pgtable-nop4d.h | -rw-r--r-- | 1.6 KB |
pgtable-nopmd.h | -rw-r--r-- | 1.9 KB |
pgtable-nopud.h | -rw-r--r-- | 1.9 KB |
pgtable.h | -rw-r--r-- | 26.2 KB |
preempt.h | -rw-r--r-- | 1.9 KB |
ptrace.h | -rw-r--r-- | 1.6 KB |
qrwlock.h | -rw-r--r-- | 5.0 KB |
qrwlock_types.h | -rw-r--r-- | 431 bytes |
qspinlock.h | -rw-r--r-- | 4.2 KB |
qspinlock_types.h | -rw-r--r-- | 2.3 KB |
resource.h | -rw-r--r-- | 1.0 KB |
rwsem.h | -rw-r--r-- | 3.0 KB |
seccomp.h | -rw-r--r-- | 1.3 KB |
sections.h | -rw-r--r-- | 4.5 KB |
segment.h | -rw-r--r-- | 249 bytes |
serial.h | -rw-r--r-- | 306 bytes |
set_memory.h | -rw-r--r-- | 323 bytes |
siginfo.h | -rw-r--r-- | 568 bytes |
signal.h | -rw-r--r-- | 269 bytes |
simd.h | -rw-r--r-- | 397 bytes |
sizes.h | -rw-r--r-- | 78 bytes |
spinlock.h | -rw-r--r-- | 290 bytes |
statfs.h | -rw-r--r-- | 130 bytes |
string.h | -rw-r--r-- | 281 bytes |
switch_to.h | -rw-r--r-- | 992 bytes |
syscall.h | -rw-r--r-- | 6.2 KB |
syscalls.h | -rw-r--r-- | 700 bytes |
termios-base.h | -rw-r--r-- | 2.1 KB |
termios.h | -rw-r--r-- | 2.8 KB |
timex.h | -rw-r--r-- | 469 bytes |
tlb.h | -rw-r--r-- | 9.1 KB |
tlbflush.h | -rw-r--r-- | 446 bytes |
topology.h | -rw-r--r-- | 2.1 KB |
trace_clock.h | -rw-r--r-- | 352 bytes |
uaccess-unaligned.h | -rw-r--r-- | 733 bytes |
uaccess.h | -rw-r--r-- | 5.2 KB |
unaligned.h | -rw-r--r-- | 1.0 KB |
unistd.h | -rw-r--r-- | 279 bytes |
user.h | -rw-r--r-- | 242 bytes |
vga.h | -rw-r--r-- | 548 bytes |
vmlinux.lds.h | -rw-r--r-- | 27.0 KB |
vtime.h | -rw-r--r-- | 52 bytes |
word-at-a-time.h | -rw-r--r-- | 2.7 KB |
xor.h | -rw-r--r-- | 13.6 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...