• Rusty Lynch's avatar
    [PATCH] Move kprobe [dis]arming into arch specific code · 7e1048b1
    Rusty Lynch authored
    The architecture independent code of the current kprobes implementation is
    arming and disarming kprobes at registration time.  The problem is that the
    code is assuming that arming and disarming is a just done by a simple write
    of some magic value to an address.  This is problematic for ia64 where our
    instructions look more like structures, and we can not insert break points
    by just doing something like:
    
    *p->addr = BREAKPOINT_INSTRUCTION;
    
    The following patch to 2.6.12-rc4-mm2 adds two new architecture dependent
    functions:
    
         * void arch_arm_kprobe(struct kprobe *p)
         * void arch_disarm_kprobe(struct kprobe *p)
    
    and then adds the new functions for each of the architectures that already
    implement kprobes (spar64/ppc64/i386/x86_64).
    
    I thought arch_[dis]arm_kprobe was the most descriptive of what was really
    happening, but each of the architectures already had a disarm_kprobe()
    function that was really a "disarm and do some other clean-up items as
    needed when you stumble across a recursive kprobe." So...  I took the
    liberty of changing the code that was calling disarm_kprobe() to call
    arch_disarm_kprobe(), and then do the cleanup in the block of code dealing
    with the recursive kprobe case.
    
    So far this patch as been tested on i386, x86_64, and ppc64, but still
    needs to be tested in sparc64.
    Signed-off-by: default avatarRusty Lynch <rusty.lynch@intel.com>
    Signed-off-by: default avatarAnil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    7e1048b1
kprobes.c 13.9 KB