• Masami Hiramatsu's avatar
    kprobes/x86: Consolidate insn decoder users for copying code · a8d11cd0
    Masami Hiramatsu authored
    Consolidate x86 instruction decoder users on the path of
    copying original code for kprobes.
    
    Kprobes decodes the same instruction a maximum of 3 times when
    preparing the instruction buffer:
    
     - The first time for getting the length of the instruction,
     - the 2nd for adjusting displacement,
     - and the 3rd for checking whether the instruction is boostable or not.
    
    For each time, the actual decoding target address is slightly
    different (1st is original address or recovered instruction buffer,
    2nd and 3rd are pointing to the copied buffer), but all have
    the same instruction.
    
    Thus, this patch also changes the target address to the copied
    buffer at first and reuses the decoded "insn" for displacement
    adjusting and checking boostability.
    Signed-off-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
    Cc: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: David S . Miller <davem@davemloft.net>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ye Xiaolong <xiaolong.ye@intel.com>
    Link: http://lkml.kernel.org/r/149076389643.22469.13151892839998777373.stgit@devboxSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    a8d11cd0
core.c 33.4 KB