Mark error_entry as forbidden to kprobes From: Prasanna S.P. This patch moves the entry.S:error_entry to .kprobes.text section, since code marked unsafe for kprobes jumps directly to entry.S::error_entry, that must be marked unsafe as well. This patch also moves all the ".previous.text" asm directives to ".previous" for kprobes section. AK: Following a similar i386 patch from Chuck Ebbert Signed-off-by: Prasanna S.P. Signed-off-by: Andi Kleen arch/x86_64/kernel/entry.S | 13 +++++++------ 1 files changed, 7 insertions(+), 6 deletions(-) Index: linux/arch/x86_64/kernel/entry.S =================================================================== --- linux.orig/arch/x86_64/kernel/entry.S +++ linux/arch/x86_64/kernel/entry.S @@ -819,7 +819,7 @@ paranoid_schedule\trace: * Exception entry point. This expects an error code/orig_rax on the stack * and the exception handler in %rax. */ -ENTRY(error_entry) +KPROBE_ENTRY(error_entry) _frame RDI /* rdi slot contains rax, oldrax contains error code */ cld @@ -904,6 +904,7 @@ error_kernelspace: je error_swapgs jmp error_sti END(error_entry) + .previous /* Reload gs selector with exception handling */ /* edi: new selector */ @@ -1023,7 +1024,7 @@ ENDPROC(execve) KPROBE_ENTRY(page_fault) errorentry do_page_fault END(page_fault) - .previous .text + .previous ENTRY(coprocessor_error) zeroentry do_coprocessor_error @@ -1045,7 +1046,7 @@ KPROBE_ENTRY(debug) paranoidentry do_debug, DEBUG_STACK paranoidexit END(debug) - .previous .text + .previous /* runs on exception stack */ KPROBE_ENTRY(nmi) @@ -1060,7 +1061,7 @@ KPROBE_ENTRY(nmi) CFI_ENDPROC #endif END(nmi) - .previous .text + .previous KPROBE_ENTRY(int3) INTR_FRAME @@ -1070,7 +1071,7 @@ KPROBE_ENTRY(int3) jmp paranoid_exit1 CFI_ENDPROC END(int3) - .previous .text + .previous ENTRY(overflow) zeroentry do_overflow @@ -1119,7 +1120,7 @@ END(stack_segment) KPROBE_ENTRY(general_protection) errorentry do_general_protection END(general_protection) - .previous .text + .previous ENTRY(alignment_check) errorentry do_alignment_check