• Rusty Lynch's avatar
    [PATCH] Return probe redesign: ia64 specific implementation · 9508dbfe
    Rusty Lynch authored
    The following patch implements function return probes for ia64 using
    the revised design.  With this new design we no longer need to do some
    of the odd hacks previous required on the last ia64 return probe port
    that I sent out for comments.
    
    Note that this new implementation still does not resolve the problem noted
    by Keith Owens where backtrace data is lost after a return probe is hit.
    
    Changes include:
     * Addition of kretprobe_trampoline to act as a dummy function for instrumented
       functions to return to, and for the return probe infrastructure to place
       a kprobe on on, gaining control so that the return probe handler
       can be called, and so that the instruction pointer can be moved back
       to the original return address.
     * Addition of arch_init(), allowing a kprobe to be registered on
       kretprobe_trampoline
     * Addition of trampoline_probe_handler() which is used as the pre_handler
       for the kprobe inserted on kretprobe_implementation.  This is the function
       that handles the details for calling the return probe handler function
       and returning control back at the original return address
     * Addition of arch_prepare_kretprobe() which is setup as the pre_handler
       for a kprobe registered at the beginning of the target function by
       kernel/kprobes.c so that a return probe instance can be setup when
       a caller enters the target function.  (A return probe instance contains
       all the needed information for trampoline_probe_handler to do it's job.)
     * Hooks added to the exit path of a task so that we can cleanup any left-over
       return probe instances (i.e. if a task dies while inside a targeted function
       then the return probe instance was reserved at the beginning of the function
       but the function never returns so we need to mark the instance as unused.)
    Signed-off-by: default avatarRusty Lynch <rusty.lynch@intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    9508dbfe
process.c 21.5 KB