]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc/kprobes: Fix handling of function offsets on ABIv2
authorNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Wed, 19 Apr 2017 12:51:01 +0000 (18:21 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 20 Apr 2017 13:18:55 +0000 (23:18 +1000)
commitc9862eed102963d66c1210a45d8f308bed4f84ed
treec09a1a2111a7db3fa59b077aef7e18f931cdf73d
parent0733f5a3456298079c0753f44fe76b0231d99fc0
powerpc/kprobes: Fix handling of function offsets on ABIv2

commit 248b6ab39198 ("perf powerpc: Fix kprobe and kretprobe handling with
kallsyms on ppc64le") changed how we use the offset field in struct kprobe on
ABIv2. perf now offsets from the global entry point if an offset is specified
and otherwise chooses the local entry point.

Fix the same in kernel for kprobe API users. We do this by extending
kprobe_lookup_name() to accept an additional parameter to indicate the offset
specified with the kprobe registration. If offset is 0, we return the local
function entry and return the global entry point otherwise.

With:
  # cd /sys/kernel/debug/tracing/
  # echo "p _do_fork" >> kprobe_events
  # echo "p _do_fork+0x10" >> kprobe_events

before this patch:
  # cat ../kprobes/list
  c0000000000d0748  k  _do_fork+0x8    [DISABLED]
  c0000000000d0758  k  _do_fork+0x18    [DISABLED]
  c0000000000412b0  k  kretprobe_trampoline+0x0    [OPTIMIZED]

and after:
  # cat ../kprobes/list
  c0000000000d04c8  k  _do_fork+0x8    [DISABLED]
  c0000000000d04d0  k  _do_fork+0x10    [DISABLED]
  c0000000000412b0  k  kretprobe_trampoline+0x0    [OPTIMIZED]

Acked-by: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/kprobes.c
arch/powerpc/kernel/optprobes.c
include/linux/kprobes.h
kernel/kprobes.c