• Masami Hiramatsu's avatar
    kprobes/x86: Fix removed int3 checking order · 829e9245
    Masami Hiramatsu authored
    
    
    Fix kprobe/x86 to check removed int3 when failing to get kprobe
    from hlist. Since we have a time window between checking int3
    exists on probed address and getting kprobe on that address,
    we can have following scenario:
    
     -------
     CPU1                     CPU2
     hit int3
     check int3 exists
                              remove int3
                              remove kprobe from hlist
     get kprobe from hlist
     no kprobe->OOPS!
     -------
    
    This patch moves int3 checking if there is no kprobe on that
    address for fixing this problem as follows:
    
     ------
     CPU1                     CPU2
     hit int3
                              remove int3
                              remove kprobe from hlist
     get kprobe from hlist
     no kprobe->check int3 exists
              ->rollback&retry
     ------
    Signed-off-by: default avatarMasami Hiramatsu <mhiramat@redhat.com>
    Acked-by: default avatarAnanth N Mavinakayanahalli <ananth@in.ibm.com>
    Cc: systemtap <systemtap@sources.redhat.com>
    Cc: DLE <dle-develop@lists.sourceforge.net>
    Cc: Dave Anderson <anderson@redhat.com>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    LKML-Reference: <20100427223348.2322.9112.stgit@localhost6.localdomain6>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    829e9245
kprobes.c 40 KB