diff options
author | Anton Arapov <anton@redhat.com> | 2013-04-03 18:00:35 +0200 |
---|---|---|
committer | Oleg Nesterov <oleg@redhat.com> | 2013-04-13 15:31:57 +0200 |
commit | 0dfd0eb8e4d72ded8b21f4fee74ba5547408cbe9 (patch) | |
tree | af23b10139df4ad0fc424ab7cffa859d216b9ac3 /include/linux/uprobes.h | |
parent | f15706b79d6f71e016cd06afa21ee31500029067 (diff) | |
download | lwn-0dfd0eb8e4d72ded8b21f4fee74ba5547408cbe9.tar.gz lwn-0dfd0eb8e4d72ded8b21f4fee74ba5547408cbe9.zip |
uretprobes: Return probe entry, prepare_uretprobe()
When a uprobe with return probe consumer is hit, prepare_uretprobe()
function is invoked. It creates return_instance, hijacks return address
and replaces it with the trampoline.
* Return instances are kept as stack per uprobed task.
* Return instance is chained, when the original return address is
trampoline's page vaddr (e.g. recursive call of the probed function).
Signed-off-by: Anton Arapov <anton@redhat.com>
Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Diffstat (limited to 'include/linux/uprobes.h')
-rw-r--r-- | include/linux/uprobes.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/uprobes.h b/include/linux/uprobes.h index 5c8d3290df41..b0507f24eeb0 100644 --- a/include/linux/uprobes.h +++ b/include/linux/uprobes.h @@ -71,6 +71,7 @@ struct uprobe_task { enum uprobe_task_state state; struct arch_uprobe_task autask; + struct return_instance *return_instances; struct uprobe *active_uprobe; unsigned long xol_vaddr; |