Messages in this thread |  | | Date | Tue, 5 Nov 2013 17:41:02 +0100 | From | Oleg Nesterov <> | Subject | Re: [PATCHSET 00/13] tracing/uprobes: Add support for more fetch methods (v6) |
| |
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.
|  |