• Andi Kleen's avatar
    [PATCH] x86_64: Keep only a single debug notifier chain · daeeafec
    Andi Kleen authored
    Calling a notifier three times in the debug handler does not make much sense,
    because a debugger can figure out the various conditions by itself.  Remove
    the additional calls to DIE_DEBUG and DIE_DEBUGSTEP completely.
    
    This matches what i386 does now.
    
    This also makes sure interrupts are always still disabled when calling a
    debugger, which prevents:
    
    BUG: using smp_processor_id() in preemptible [00000001] code: tpopf/1470
    caller is post_kprobe_handler+0x9/0x70
    
    Call Trace:<ffffffff8024f10f>{smp_processor_id+191} <ffffffff80120e69>{post_kpro
    be_handler+9} 
    <ffffffff80120f7a>{kprobe_exceptions_notify+58} 
    <ffffffff80144fc0>{notifier_call_chain+32} <ffffffff80110daf>{do_debug+335} 
    <ffffffff8010f513>{debug+127}  <EOE> 
    
    on preemptible debug kernels with kprobes when single stepping in user space.
    
    This was probably a bug even on non preempt kernels, this function was
    supposed to be running with interrupts off according to a comment there.
    
    Note to third part debugger maintainers: please double check your debugger can
    still single step.
    
    Cc: <prasanna@in.ibm.com>
    Cc: <jbeulich@novell.com>
    Cc: <kaos@sgi.com>
    Cc: <jim.houston@ccur.com>
    Cc: <jfv@bluesong.net>
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    daeeafec
kdebug.h 1.21 KB