• Prasanna S Panchamukhi's avatar
    [PATCH] Kprobes: prevent possible race conditions generic · d0aaff97
    Prasanna S Panchamukhi authored
    There are possible race conditions if probes are placed on routines within the
    kprobes files and routines used by the kprobes.  For example if you put probe
    on get_kprobe() routines, the system can hang while inserting probes on any
    routine such as do_fork().  Because while inserting probes on do_fork(),
    register_kprobes() routine grabs the kprobes spin lock and executes
    get_kprobe() routine and to handle probe of get_kprobe(), kprobes_handler()
    gets executed and tries to grab kprobes spin lock, and spins forever.  This
    patch avoids such possible race conditions by preventing probes on routines
    within the kprobes file and routines used by kprobes.
    
    I have modified the patches as per Andi Kleen's suggestion to move kprobes
    routines and other routines used by kprobes to a seperate section
    .kprobes.text.
    
    Also moved page fault and exception handlers, general protection fault to
    .kprobes.text section.
    
    These patches have been tested on i386, x86_64 and ppc64 architectures, also
    compiled on ia64 and sparc64 architectures.
    Signed-off-by: default avatarPrasanna S Panchamukhi <prasanna@in.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    d0aaff97
kprobes.c 15.5 KB