uretprobes: preparation patch

  Implement a check whether at least one of consumer's handlers were
passed to uprobe_register()
  Implement a cap that will be removed at the last patch of return
uprobes implementation.

Signed-off-by: Anton Arapov <anton@redhat.com>
uretprobes/x86: hijack return address

Function to hijack the return address, replace it with a "trampoline"
and function to predict the stack pointer address value at return.

v2:
  remove ->doomed flag, kill task immediately

Signed-off-by: Anton Arapov <anton@redhat.com>
uretprobes: xol_take_insn_slot() work

old:
The first time a uprobe with return consumer is hit for a process, a
trampoline slot is obtained in the xol_area and initialized with a
breakpoint instruction. This slot is subsequently used by all
uretprobes.

changes since v2:
  unified xol_take_insn_slot(), get rid of xol_get_trampoline_slot()

Signed-off-by: Anton Arapov <anton@redhat.com>
uretprobes: return probe entry, prepare uretprobe

When a uprobe with return consumer is hit, prepare_uretprobe function is
invoked. It creates return_instance, hijacks return address and replaces
it with the trampoline.

v3:
  get_uprobe()

v2:
  get rid of ->return_consumers

todo:
  protect uprobe

Signed-off-by: Anton Arapov <anton@redhat.com>
uretprobes: invoke return probe handlers

uretprobe handlers are invoked when the trampoline is hit, on completion
the trampoline is replaced with the saved return address and the
uretprobe instance deleted.

v3: [get/put]_uprobe()

v2:
  get rid of ->return_consumers
  use rp_handler()

Signed-off-by: Anton Arapov <anton@redhat.com>
uretprobes: remove -ENOSYS from uprobe_register()

  remove the unneeded anymore bits. Return probes is implemented.

Signed-off-by: Anton Arapov <anton@redhat.com>