Commit ebbd3000 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull kprobes fixes from Ingo Molnar:
 "Two kprobes fixes: a blacklist fix and an instruction patching related
  corruption fix"

* 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  kprobes/x86: Blacklist non-attachable interrupt functions
  kprobes/x86: Fix instruction patching corruption when copying more than one RIP-relative instruction
parents 4b04e73a a50480cb
...@@ -566,6 +566,7 @@ ENTRY(interrupt_entry) ...@@ -566,6 +566,7 @@ ENTRY(interrupt_entry)
ret ret
END(interrupt_entry) END(interrupt_entry)
_ASM_NOKPROBE(interrupt_entry)
/* Interrupt entry/exit. */ /* Interrupt entry/exit. */
...@@ -766,6 +767,7 @@ native_irq_return_ldt: ...@@ -766,6 +767,7 @@ native_irq_return_ldt:
jmp native_irq_return_iret jmp native_irq_return_iret
#endif #endif
END(common_interrupt) END(common_interrupt)
_ASM_NOKPROBE(common_interrupt)
/* /*
* APIC interrupts. * APIC interrupts.
...@@ -780,6 +782,7 @@ ENTRY(\sym) ...@@ -780,6 +782,7 @@ ENTRY(\sym)
call \do_sym /* rdi points to pt_regs */ call \do_sym /* rdi points to pt_regs */
jmp ret_from_intr jmp ret_from_intr
END(\sym) END(\sym)
_ASM_NOKPROBE(\sym)
.endm .endm
/* Make sure APIC interrupt handlers end up in the irqentry section: */ /* Make sure APIC interrupt handlers end up in the irqentry section: */
...@@ -960,6 +963,7 @@ ENTRY(\sym) ...@@ -960,6 +963,7 @@ ENTRY(\sym)
jmp error_exit jmp error_exit
.endif .endif
_ASM_NOKPROBE(\sym)
END(\sym) END(\sym)
.endm .endm
......
...@@ -189,7 +189,7 @@ static int copy_optimized_instructions(u8 *dest, u8 *src, u8 *real) ...@@ -189,7 +189,7 @@ static int copy_optimized_instructions(u8 *dest, u8 *src, u8 *real)
int len = 0, ret; int len = 0, ret;
while (len < RELATIVEJUMP_SIZE) { while (len < RELATIVEJUMP_SIZE) {
ret = __copy_instruction(dest + len, src + len, real, &insn); ret = __copy_instruction(dest + len, src + len, real + len, &insn);
if (!ret || !can_boost(&insn, src + len)) if (!ret || !can_boost(&insn, src + len))
return -EINVAL; return -EINVAL;
len += ret; len += ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment