04 Jun, 2014

2 commits

  • Fix perf probe to find correct variable DIE which has location or
    external instance by tracking down the lexical blocks.

    Current die_find_variable() expects that the all variable DIEs
    which has DW_TAG_variable have a location. However, since recent
    dwarf information may have declaration variable DIEs at the
    entry of function (subprogram), die_find_variable() returns it.

    To solve this problem, it must track down the DIE tree to find
    a DIE which has an actual location or a reference for external
    instance.

    e.g. finding a DIE which origin is ;

    : Abbrev Number: 95 (DW_TAG_subprogram)
    DW_AT_abstract_origin:
    DW_AT_low_pc : 0x1850
    [...]
    : Abbrev Number: 119 (DW_TAG_variable) DW_AT_abstract_origin:
    : Abbrev Number: 119 (DW_TAG_variable)
    [...]
    : Abbrev Number: 105 (DW_TAG_lexical_block)
    DW_AT_ranges : 0xaa0
    : Abbrev Number: 96 (DW_TAG_variable) DW_AT_abstract_origin:
    DW_AT_location : 0x486c (location list)

    Signed-off-by: Masami Hiramatsu
    Tested-by: Arnaldo Carvalho de Melo
    Acked-by: Arnaldo Carvalho de Melo
    Cc: Arnaldo Carvalho de Melo
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Ingo Molnar
    Cc: Namhyung Kim
    Link: http://lkml.kernel.org/r/20140529121930.30879.87092.stgit@ltc230.yrl.intra.hitachi.co.jp
    Signed-off-by: Jiri Olsa

    Masami Hiramatsu
     
  • Fix a segfault bug by asking for variable it doesn't find.
    Since the convert_variable() didn't handle error code returned
    from convert_variable_location(), it just passed an incomplete
    variable field and then a segfault was occurred when formatting
    the field.

    This fixes that bug by handling success code correctly in
    convert_variable(). Other callers of convert_variable_location()
    are correctly checking the return code.

    This bug was introduced by following commit. But another hidden
    erroneous error handling has been there previously (-ENOMEM case).

    commit 3d918a12a1b3088ac16ff37fa52760639d6e2403

    Signed-off-by: Masami Hiramatsu
    Reported-by: Arnaldo Carvalho de Melo
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Ingo Molnar
    Cc: Namhyung Kim
    Link: http://lkml.kernel.org/r/20140529105232.28251.30447.stgit@ltc230.yrl.intra.hitachi.co.jp
    Signed-off-by: Jiri Olsa

    Masami Hiramatsu
     

11 May, 2014

1 commit


09 May, 2014

2 commits


06 May, 2014

1 commit

  • Pull networking fixes from David Miller:

    1) e1000e computes header length incorrectly wrt vlans, fix from Vlad
    Yasevich.

    2) ns_capable() check in sock_diag netlink code, from Andrew
    Lutomirski.

    3) Fix invalid queue pairs handling in virtio_net, from Amos Kong.

    4) Checksum offloading busted in sxgbe driver due to incorrect
    descriptor layout, fix from Byungho An.

    5) Fix build failure with SMC_DEBUG set to 2 or larger, from Zi Shen
    Lim.

    6) Fix uninitialized A and X registers in BPF interpreter, from Alexei
    Starovoitov.

    7) Fix arch dependencies of candence driver.

    8) Fix netlink capabilities checking tree-wide, from Eric W Biederman.

    9) Don't dump IFLA_VF_PORTS if netlink request didn't ask for it in
    IFLA_EXT_MASK, from David Gibson.

    10) IPV6 FIB dump restart doesn't handle table changes that happen
    meanwhile, causing the code to loop forever or emit dups, fix from
    Kumar Sandararajan.

    11) Memory leak on VF removal in bnx2x, from Yuval Mintz.

    12) Bug fixes for new Altera TSE driver from Vince Bridgers.

    13) Fix route lookup key in SCTP, from Xugeng Zhang.

    14) Use BH blocking spinlocks in SLIP, as per a similar fix to CAN/SLCAN
    driver. From Oliver Hartkopp.

    15) TCP doesn't bump retransmit counters in some code paths, fix from
    Eric Dumazet.

    16) Clamp delayed_ack in tcp_cubic to prevent theoretical divides by
    zero. Fix from Liu Yu.

    17) Fix locking imbalance in error paths of HHF packet scheduler, from
    John Fastabend.

    18) Properly reference the transport module when vsock_core_init() runs,
    from Andy King.

    19) Fix buffer overflow in cdc_ncm driver, from Bjørn Mork.

    20) IP_ECN_decapsulate() doesn't see a correct SKB network header in
    ip_tunnel_rcv(), fix from Ying Cai.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (132 commits)
    net: macb: Fix race between HW and driver
    net: macb: Remove 'unlikely' optimization
    net: macb: Re-enable RX interrupt only when RX is done
    net: macb: Clear interrupt flags
    net: macb: Pass same size to DMA_UNMAP as used for DMA_MAP
    ip_tunnel: Set network header properly for IP_ECN_decapsulate()
    e1000e: Restrict MDIO Slow Mode workaround to relevant parts
    e1000e: Fix issue with link flap on 82579
    e1000e: Expand workaround for 10Mb HD throughput bug
    e1000e: Workaround for dropped packets in Gig/100 speeds on 82579
    net/mlx4_core: Don't issue PCIe speed/width checks for VFs
    net/mlx4_core: Load the Eth driver first
    net/mlx4_core: Fix slave id computation for single port VF
    net/mlx4_core: Adjust port number in qp_attach wrapper when detaching
    net: cdc_ncm: fix buffer overflow
    Altera TSE: ALTERA_TSE should depend on HAS_DMA
    vsock: Make transport the proto owner
    net: sched: lock imbalance in hhf qdisc
    net: mvmdio: Check for a valid interrupt instead of an error
    net phy: Check for aneg completion before setting state to PHY_RUNNING
    ...

    Linus Torvalds
     

02 May, 2014

1 commit

  • Pull perf fixes from Ingo Molnar:
    "Mostly tooling fixes, plus an Intel RAPL PMU driver fix"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf tests x86: Fix stack map lookup in dwarf unwind test
    perf x86: Fix perf to use non-executable stack, again
    perf tools: Remove extra '/' character in events file path
    perf machine: Search for modules in %s/lib/modules/%s
    perf tests: Add static build make test
    perf tools: Fix bfd dependency libraries detection
    perf tools: Use LDFLAGS instead of ALL_LDFLAGS
    perf/x86: Fix RAPL rdmsrl_safe() usage
    tools lib traceevent: Fix memory leak in pretty_print()
    tools lib traceevent: Fix backward compatibility macros for pevent filter enums
    perf tools: Disable libdw unwind for all but x86 arch
    perf tests x86: Fix memory leak in sample_ustack()

    Linus Torvalds
     

01 May, 2014

1 commit


30 Apr, 2014

7 commits

  • Previous commit 'perf x86: Fix perf to use non-executable stack, again'
    moved stack map into MAP__VARIABLE map type again. Fixing the dwarf
    unwind test stack map lookup appropriately.

    Cc: Corey Ashford
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Arnaldo Carvalho de Melo
    Cc: Jean Pihet
    Link: http://lkml.kernel.org/n/tip-ttzyhbe4zls24z7ednkmhvxl@git.kernel.org
    Signed-off-by: Jiri Olsa

    Jiri Olsa
     
  • arch/x86/tests/regs_load.S is missing the linker note about the stack
    requirements, therefore making the linker fall back to an executable
    stack. As this object gets linked against the final perf binary, it'll
    needlessly end up with an executable stack. Fix this by adding the
    appropriate linker note.

    Also add a global linker flag to prevent future regressions, as
    suggested by Jiri. This way perf won't get an executable stack even if
    we fail to add the .GNU-stack linker note to future assembler files.
    Though, doing so might create regressions the other way around, when
    (statically) linking against libraries needing an executable stack.
    But, apparently, regressing in that direction is wanted as it is an
    indicator of poor code quality -- or just missing linker notes.

    Fixes: 3c8b06f981 ("perf tests x86: Introduce perf_regs_load function")

    Signed-off-by: Mathias Krause
    Acked-by: Ingo Molnar
    Cc: Arnaldo Carvalho de Melo
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1398617466-22749-1-git-send-email-minipli@googlemail.com
    Signed-off-by: Jiri Olsa

    Mathias Krause
     
  • The array debugfs_known_mountpoints[] will cause extra '/'
    character output.
    Remove it.

    pre:
    $ perf probe -l
    /sys/kernel/debug//tracing/uprobe_events file does not exist -
    please rebuild kernel with CONFIG_UPROBE_EVENTS.

    post:
    $ perf probe -l
    /sys/kernel/debug/tracing/uprobe_events file does not exist -
    please rebuild kernel with CONFIG_UPROBE_EVENTS.

    Signed-off-by: Xia Kaixu
    Acked-by: Namhyung Kim
    Link: http://lkml.kernel.org/r/535B6660.2060001@huawei.com
    Signed-off-by: Jiri Olsa

    Xia Kaixu
     
  • Modules installed outside of the kernel's build system should go into
    "%s/lib/modules/%s/extra", but at present, perf will only look at them
    when they are in "%s/lib/modules/%s/kernel". Lets encourage good
    citizenship by relaxing this requirement to "%s/lib/modules/%s". This
    way open source modules that are out-of-tree have no incentive to start
    populating a directory reserved for in-kernel modules and I can stop
    hex-editing my system's perf binary when profiling OSS out-of-tree
    modules.

    Feedback from Namhyung Kim correctly revealed that the hex-edits that I
    had been doing meant that perf was also traversing the build and source
    symlinks in %s/lib/modules/%s. That is undesireable, so we explicitly
    exclude them from traversal with a minor tweak to the traversal routine.

    Signed-off-by: Richard Yao
    Acked-by: Namhyung kim
    Link: http://lkml.kernel.org/r/1398532675-13684-1-git-send-email-ryao@gentoo.org
    Signed-off-by: Jiri Olsa

    Richard Yao
     
  • Adding test for building static perf build into the automated
    suite. Also available via following commands:

    $ make -f tests/make make_static
    - make_static: cd . && make -f Makefile DESTDIR=/tmp/tmp.7u5MlB4njo LDFLAGS=-static
    $ make -f tests/make make_static_O
    - make_static_O: cd . && make -f Makefile O=/tmp/tmp.Ay6r3wEmtX DESTDIR=/tmp/tmp.vK0KQwO0Vi LDFLAGS=-static

    Acked-by: David Ahern
    Cc: Arnaldo Carvalho de Melo
    Cc: Corey Ashford
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1398760413-7574-1-git-send-email-jolsa@kernel.org
    Signed-off-by: Jiri Olsa

    Jiri Olsa
     
  • There's false assumption in the library detection code
    assuming -liberty and -lz are always present once bfd
    is detected. The fails on Ubuntu (14.04) as reported
    by Ingo.

    Forcing the bdf dependency libraries detection any
    time bfd library is detected.

    Reported-by: Ingo Molnar
    Tested-by: Ingo Molnar
    Cc: Arnaldo Carvalho de Melo
    Cc: Corey Ashford
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1398676935-6615-1-git-send-email-jolsa@kernel.org
    Signed-off-by: Jiri Olsa

    Jiri Olsa
     
  • We no longer use ALL_LDFLAGS, Replacing with LDFLAGS.

    Acked-by: Namhyung Kim
    Cc: Arnaldo Carvalho de Melo
    Cc: Corey Ashford
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1398675770-3109-1-git-send-email-jolsa@kernel.org
    Signed-off-by: Jiri Olsa

    Jiri Olsa
     

23 Apr, 2014

5 commits

  • …it/jolsa/perf into perf/urgent

    Pull perf/urgent fixes from Jiri Olsa:

    * Fix memory leak and backward compatibility macros for pevent
    filter enums in traceevent library (Steven Rostedt)

    * Disable libdw unwind for all but x86 arch (Jiri Olsa)

    * Fix memory leak in sample_ustack (Masanari Iida)

    Signed-off-by: Jiri Olsa <jolsa@redhat.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     
  • Commit 12e55569a244 "tools lib traceevent: Use helper trace-seq in print
    functions like kernel does" added a extra trace_seq helper to process
    string arguments like the kernel does it. But the difference between the
    kernel and the userspace library is that the kernel's trace_seq structure
    has a static allocated buffer. The userspace one has a dynamically
    allocated one. It requires a trace_seq_destroy(), otherwise it produces
    a nasty memory leak.

    Cc: stable@vger.kernel.org # 3.14+
    Signed-off-by: Steven Rostedt
    Link: http://lkml.kernel.org/r/20140422192330.6bb09bf8@gandalf.local.home
    Signed-off-by: Jiri Olsa

    Steven Rostedt
     
  • The return value for pevent_filter_match() is suppose to return FILTER_NONE
    if the event doesn't have a filter, and FILTER_NOEXIST if there is no filter
    at all. But the change 41e12e580a7 "tools lib traceevent: Refactor
    pevent_filter_match() to get rid of die()" replaced the return value
    with PEVENT_ERRNO__* values and added "backward compatibility" macros
    that used the old names. Unfortunately, the NOEXIST and NONE macros were
    swapped, and this broke users that use the old return names.

    Signed-off-by: Steven Rostedt
    Link: http://lkml.kernel.org/r/20140421222346.0351ced4@gandalf.local.home
    Signed-off-by: Jiri Olsa

    Steven Rostedt
     
  • So far there's only x86 libdw unwind support merged in perf.
    Disable it on all other architectures in case libdw unwind
    support is detected in system.

    Cc: Arnaldo Carvalho de Melo
    Cc: Corey Ashford
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Jean Pihet
    Cc: Josh Boyer
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1397988006-14158-1-git-send-email-jolsa@redhat.com
    Signed-off-by: Jiri Olsa

    Jiri Olsa
     
  • The buf is not freed, when kernel failed to get stack map
    and return.

    Signed-off-by: Masanari Iida
    Link: http://lkml.kernel.org/r/1398091024-7901-1-git-send-email-standby24x7@gmail.com
    Signed-off-by: Jiri Olsa

    Masanari Iida
     

22 Apr, 2014

1 commit


21 Apr, 2014

1 commit


20 Apr, 2014

3 commits

  • In the current version, when using perf record, if something goes
    wrong in tools/perf/builtin-record.c:375
    session = perf_session__new(file, false, NULL);

    The error message:
    "Not enough memory for reading per file header"

    is issued. This error message seems to be outdated and is not very
    helpful. This patch proposes to replace this error message by
    "Perf session creation failed"

    I believe this issue has been brought to lkml:
    https://lkml.org/lkml/2014/2/24/458
    although this patch only tackles a (small) part of the issue.

    Additionnaly, this patch improves error reporting in
    tools/perf/util/data.c open_file_write.

    Currently, if the call to open fails, the user is unaware of it.
    This patch logs the error, before returning the error code to
    the caller.

    Reported-by: Will Deacon
    Signed-off-by: Adrien BAK
    Link: http://lkml.kernel.org/r/1397786443.3093.4.camel@beast
    [ Reorganize the changelog into paragraphs ]
    [ Added empty line after fd declaration in open_file_write ]
    Signed-off-by: Jiri Olsa

    Adrien BAK
     
  • pert-report doesn't resolve function names in VDSO:

    $ perf report --stdio -g flat,0.0,15,callee --sort pid
    ...
    8.76%
    0x7fff6b1fe861
    __gettimeofday
    ACE_OS::gettimeofday()
    ...

    In this case symbol values should be adjusted the same way as for executables,
    relocatable objects and prelinked libraries.

    After fix:

    $ perf report --stdio -g flat,0.0,15,callee --sort pid
    ...
    8.76%
    __vdso_gettimeofday
    __gettimeofday
    ACE_OS::gettimeofday()

    Signed-off-by: Vladimir Nikulichev
    Tested-by: Namhyung Kim
    Reviewed-by: Adrian Hunter
    Link: http://lkml.kernel.org/r/969812.163009436-sendEmail@nvs
    Signed-off-by: Jiri Olsa

    Vladimir Nikulichev
     
  • Every event in the perf-kvm has a 'stats' structure, which contains
    max/min/average/etc times of handling this event.
    The problem is that the 'perf-kvm stat report' command always shows
    that 'min time' is 0us for every event. Example:

    # perf kvm stat report

    Analyze events for all VCPUs:

    VM-EXIT Samples Samples% Time% Min Time Max Time Avg time
    [..]
    0xB2 MSCH 12 0.07% 0.00% 0us 8us 7.31us ( +- 2.11% )
    0xB2 CHSC 12 0.07% 0.00% 0us 18us 9.39us ( +- 9.49% )
    0xB2 STPX 8 0.05% 0.00% 0us 2us 1.88us ( +- 7.18% )
    0xB2 STSI 7 0.04% 0.00% 0us 44us 16.49us ( +- 38.20% )
    [..]

    This happens because the 'stats' structure is not initialized and
    stats->min equals to 0. Lets initialize the structure for every
    event after its allocation using init_stats() function. This initializes
    stats->min to -1 and makes 'Min time' statistics counting work:

    # perf kvm stat report

    Analyze events for all VCPUs:

    VM-EXIT Samples Samples% Time% Min Time Max Time Avg time
    [..]
    0xB2 MSCH 12 0.07% 0.00% 6us 8us 7.31us ( +- 2.11% )
    0xB2 CHSC 12 0.07% 0.00% 7us 18us 9.39us ( +- 9.49% )
    0xB2 STPX 8 0.05% 0.00% 1us 2us 1.88us ( +- 7.18% )
    0xB2 STSI 7 0.04% 0.00% 1us 44us 16.49us ( +- 38.20% )
    [..]

    Signed-off-by: Alexander Yarygin
    Signed-off-by: Christian Borntraeger
    Reviewed-by: David Ahern
    Link: http://lkml.kernel.org/r/1397053319-2130-3-git-send-email-borntraeger@de.ibm.com
    [ Fixing the perf examples changelog output ]
    Signed-off-by: Jiri Olsa

    Alexander Yarygin
     

19 Apr, 2014

1 commit

  • Pull char/misc driver fixes from Greg KH:
    "Here are a few driver fixes for char/misc drivers that resolve
    reported issues.

    All have been in linux-next successfully for a few days"

    * tag 'char-misc-3.15-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
    Drivers: hv: vmbus: Negotiate version 3.0 when running on ws2012r2 hosts
    Tools: hv: Handle the case when the target file exists correctly
    vme_tsi148: Utilize to_pci_dev() macro
    vme_tsi148: Fix PCI address mapping assumption
    vme_tsi148: Fix typo in tsi148_slave_get()
    w1: avoid recursive device_add
    w1: fix netlink refcnt leak on error path
    misc: Grammar s/addition/additional/
    drivers: mcb: fix memory leak in chameleon_parse_cells() error path
    mei: ignore client writing state during cb completion
    mei: me: do not load the driver if the FW doesn't support MEI interface
    GenWQE: Increase driver version number
    GenWQE: Fix multithreading problems
    GenWQE: Ensure rc is not returning an uninitialized value
    GenWQE: Add wmb before DDCB is started
    GenWQE: Enable access to VPD flash area

    Linus Torvalds
     

17 Apr, 2014

3 commits

  • Pull perf fixes from Ingo Molnar:
    "Tooling fixes, plus a simple hardware-enablement patch for the Intel
    RAPL PMU (energy use measurement) on Haswell CPUs, which I hope is
    still fine at this stage"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf tools: Instead of redirecting flex output, use -o
    perf tools: Fix double free in perf test 21 (code-reading.c)
    perf stat: Initialize statistics correctly
    perf bench: Set more defaults in the 'numa' suite
    perf bench: Fix segfault at the end of an 'all' execution
    perf bench: Update manpage to mention numa and futex
    perf probe: Use dwarf_getcfi_elf() instead of dwarf_getcfi()
    perf probe: Fix to handle errors in line_range searching
    perf probe: Fix --line option behavior
    perf tools: Pick up libdw without explicit LIBDW_DIR
    MAINTAINERS: Change e-mail to kernel.org one
    perf callchains: Disable unwind libraries when libelf isn't found
    tools lib traceevent: Do not call warning() directly
    tools lib traceevent: Print event name when show warning if possible
    perf top: Fix documentation of invalid -s option
    perf/x86: Enable DRAM RAPL support on Intel Haswell

    Linus Torvalds
     
  • Pull locking fixes from Ingo Molnar:
    "liblockdep fixes and mutex debugging fixes"

    * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    locking/mutex: Fix debug_mutexes
    tools/liblockdep: Add proper versioning to the shared obj
    tools/liblockdep: Ignore asmlinkage and visible

    Linus Torvalds
     
  • Return the appropriate error code and handle the case when the target
    file exists correctly. This fixes a bug.

    Signed-off-by: K. Y. Srinivasan
    Cc: [3.14]
    Signed-off-by: Greg Kroah-Hartman

    K. Y. Srinivasan
     

15 Apr, 2014

2 commits


14 Apr, 2014

9 commits

  • Conflicts:
    tools/perf/bench/numa.c

    Pull perf fixes from Jiri Olsa.

    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • …/sashal/linux into core/urgent

    Pull liblockdep fixes from Sasha Levin:

    " 1. There was a build breakage caused by marking a function 'asmlinkage'
    in lockdep.h. Fix that by ignoring asmlinkage and visible annotations.

    2. Josh Boyer mentioned that Fedora would like to include liblockdep
    as a package, so we had to fix our versioning methods from being dumb
    and pointless to something actually usable. So now liblockdep.so tracks
    the kernel version which makes lives of distro folks much easier. "

    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     
  • perf stat did initialize the stats structure used to compute
    stddev etc. incorrectly. It merely zeroes it. But one member
    (min) needs to be set to a non zero value. This causes min
    to be not computed at all. Call init_stats() correctly.

    It doesn't matter for stat currently because it doesn't use
    min, but it's still better to do it correctly.

    The other users of statistics are already correct.

    Signed-off-by: Andi Kleen
    Acked-by: Namhyung Kim
    Link: http://lkml.kernel.org/r/1395768699-16060-1-git-send-email-andi@firstfloor.org
    Signed-off-by: Jiri Olsa

    Andi Kleen
     
  • Currently,

    $ perf bench numa mem

    errors out with usage information. To make this more user-friendly, let
    us provide a minimum set of default values required for a test
    run. As an added bonus,

    $ perf bench all

    now goes all the way to completion.

    Signed-off-by: Ramkumar Ramachandra
    Cc: Arnaldo Carvalho de Melo
    Cc: David Ahern
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Link: http://lkml.kernel.org/r/1395964219-22173-2-git-send-email-artagnon@gmail.com
    Signed-off-by: Jiri Olsa

    Ramkumar Ramachandra
     
  • At the end of

    $ perf bench all

    the program segfaults because it attempts to dereference a NULL
    pointer. Fix this fault.

    Signed-off-by: Ramkumar Ramachandra
    Cc: Arnaldo Carvalho de Melo
    Cc: David Ahern
    Cc: Jiri Olsa
    Link: http://lkml.kernel.org/r/1395964219-22173-4-git-send-email-artagnon@gmail.com
    Signed-off-by: Jiri Olsa

    Ramkumar Ramachandra
     
  • Signed-off-by: Ramkumar Ramachandra
    Cc: Arnaldo Carvalho de Melo
    Cc: David Ahern
    Cc: Jiri Olsa
    Link: http://lkml.kernel.org/r/1395964219-22173-3-git-send-email-artagnon@gmail.com
    Signed-off-by: Jiri Olsa

    Ramkumar Ramachandra
     
  • The dwarf_getcfi() only checks .debug_frame section for CFI, but as
    most binaries only have .eh_frame it'd return NULL and it makes
    some variables inaccessible.

    Using dwarf_getcfi_elf (along with dwarf_getelf()) allows to show and
    add probe to more variables.

    Signed-off-by: Namhyung Kim
    Acked-by: Masami Hiramatsu
    Cc: Masami Hiramatsu
    Link: http://lkml.kernel.org/r/1396854348-9296-1-git-send-email-namhyung@kernel.org
    Signed-off-by: Jiri Olsa

    Namhyung Kim
     
  • As Namhyung reported(https://lkml.org/lkml/2014/4/1/89),
    current perf-probe -L option doesn't handle errors in line-range
    searching correctly. It causes a SEGV if an error occured in the
    line-range searching.

    ----
    $ perf probe -x ./perf -v -L map__load
    Open Debuginfo file: /home/namhyung/project/linux/tools/perf/perf
    fname: util/map.c, lineno:153
    New line range: 153 to 2147483647
    path: (null)
    Segmentation fault (core dumped)
    ----

    This is because line_range_inline_cb() ignores errors
    from find_line_range_by_line() which means that lr->path is
    already freed on the error path in find_line_range_by_line().
    As a result, get_real_path() accesses the lr->path and it
    causes a NULL pointer exception.

    This fixes line_range_inline_cb() to handle the error correctly,
    and report it to the caller.

    Anyway, this just fixes a possible SEGV bug, Namhyung's patch
    is also required.

    Reported-by: Namhyung Kim
    Signed-off-by: Masami Hiramatsu
    Acked-by: Namhyung Kim
    Cc: Arnaldo Carvalho de Melo
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20140402054831.19080.27006.stgit@ltc230.yrl.intra.hitachi.co.jp
    Signed-off-by: Jiri Olsa

    Masami Hiramatsu
     
  • The commit 5a62257a3ddd1 ("perf probe: Replace line_list with
    intlist") replaced line_list to intlist but it has a problem that if a
    same line was added again, it'd return -EEXIST rather than 1.

    Since line_range_walk_cb() only checks the result being negative, it
    resulted in failure or segfault sometimes.

    Signed-off-by: Namhyung Kim
    Acked-by: Masami Hiramatsu
    Cc: Masami Hiramatsu
    Link: http://lkml.kernel.org/r/1396327677-3657-1-git-send-email-namhyung@kernel.org
    Signed-off-by: Jiri Olsa

    Namhyung Kim