summaryrefslogtreecommitdiff
path: root/include/linux/uprobes.h
diff options
context:
space:
mode:
authorAnton Arapov <anton@redhat.com>2013-04-03 18:00:35 +0200
committerOleg Nesterov <oleg@redhat.com>2013-04-13 15:31:57 +0200
commit0dfd0eb8e4d72ded8b21f4fee74ba5547408cbe9 (patch)
treeaf23b10139df4ad0fc424ab7cffa859d216b9ac3 /include/linux/uprobes.h
parentf15706b79d6f71e016cd06afa21ee31500029067 (diff)
downloadlwn-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.h1
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;