Re: [PATCHSET 00/13] tracing/uprobes: Add support for more fetchmethods (v6)

From: Oleg Nesterov
Date: Tue Nov 05 2013 - 11:39:49 EST


On 11/05, Namhyung Kim wrote:
>
> On Mon, 4 Nov 2013 19:57:54 +0100, Oleg Nesterov wrote:
> >>
> >> static void __user *get_user_vaddr(struct pt_regs *regs, unsigned long addr)
> >> {
> >> return (void __force __user *)addr + instruction_pointer(regs);
> >> }
> >>
> >> ?
> >>
> >> This should solve the problems with relocations/randomization/bss.
> >>
> >> The obvious disadvantage is that it is not easy to calculate the
> >> offset we need to pass as an argument, it depends on the probed
> >> function.
> >
> > forgot to mention... and instruction_pointer() can't work in ret-probe,
> > we need to pass the "unsigned long func" arg somehow...
>
> Hmm.. what's the value of tu->offset in this case? Does it have the
> offset of the return address or the start of the function?

It is the offest of function. IOW, it is the same regardless of
is_ret_probe().

Ignoring probes_seq_show() we only need it for uprobe_register().

(yes, it is also used in uprobe_unregister/apply, but this is only
because this API ugly and should be cleanuped).

Oleg.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/