• Jason Wessel's avatar
    kgdb: fix SMP NMI kgdb_handle_exception exit race · 56fb7093
    Jason Wessel authored
    Fix the problem of protecting the kgdb handle_exception exit
    which had an NMI race condition, while trying to restore
    normal system operation.
    
    There was a small window after the master processor sets cpu_in_debug
    to zero but before it has set kgdb_active to zero where a
    non-master processor in an SMP system could receive an NMI and
    re-enter the kgdb_wait() loop.
    
    As long as the master processor sets the cpu_in_debug before sending
    the cpu roundup the cpu_in_debug variable can also be used to guard
    against the race condition.
    
    The kgdb_wait() function no longer needs to check
    kgdb_active because it is done in the arch specific code
    and handled along with the nmi traps at the low level.
    This also allows kgdb_wait() to exit correctly if it was
    entered for some unknown reason due to a spurious NMI that
    could not be handled by the arch specific code.
    Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    56fb7093
kgdb.c 37.6 KB