diff options
Diffstat (limited to 'arch/ia64/kernel/kprobes.c')
-rw-r--r-- | arch/ia64/kernel/kprobes.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c index 5bc46f151344..5dc98b5abcfb 100644 --- a/arch/ia64/kernel/kprobes.c +++ b/arch/ia64/kernel/kprobes.c | |||
@@ -936,10 +936,15 @@ static void ia64_get_bsp_cfm(struct unw_frame_info *info, void *arg) | |||
936 | return; | 936 | return; |
937 | } | 937 | } |
938 | 938 | ||
939 | unsigned long arch_deref_entry_point(void *entry) | ||
940 | { | ||
941 | return ((struct fnptr *)entry)->ip; | ||
942 | } | ||
943 | |||
939 | int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs) | 944 | int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs) |
940 | { | 945 | { |
941 | struct jprobe *jp = container_of(p, struct jprobe, kp); | 946 | struct jprobe *jp = container_of(p, struct jprobe, kp); |
942 | unsigned long addr = ((struct fnptr *)(jp->entry))->ip; | 947 | unsigned long addr = arch_deref_entry_point(jp->entry); |
943 | struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); | 948 | struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); |
944 | struct param_bsp_cfm pa; | 949 | struct param_bsp_cfm pa; |
945 | int bytes; | 950 | int bytes; |