mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-07 15:01:44 +00:00
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
This commit is contained in:
commit
ebbd30004d
2 changed files with 5 additions and 1 deletions
|
@ -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:
|
||||||
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)
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue