x86: Annotate idtentry_df()
authorPeter Zijlstra <peterz@infradead.org>
Mon, 14 Mar 2022 17:07:30 +0000 (18:07 +0100)
committerPeter Zijlstra <peterz@infradead.org>
Tue, 15 Mar 2022 09:32:45 +0000 (10:32 +0100)
Without CONFIG_X86_ESPFIX64 exc_double_fault() is noreturn and objtool
is clever enough to figure that out.

vmlinux.o: warning: objtool: asm_exc_double_fault()+0x22: unreachable instruction

0000000000001260 <asm_exc_double_fault>:
1260:       f3 0f 1e fa             endbr64
1264:       90                      nop
1265:       90                      nop
1266:       90                      nop
1267:       e8 84 03 00 00          call   15f0 <paranoid_entry>
126c:       48 89 e7                mov    %rsp,%rdi
126f:       48 8b 74 24 78          mov    0x78(%rsp),%rsi
1274:       48 c7 44 24 78 ff ff ff ff      movq   $0xffffffffffffffff,0x78(%rsp)
127d:       e8 00 00 00 00          call   1282 <asm_exc_double_fault+0x22> 127e: R_X86_64_PLT32    exc_double_fault-0x4
1282:       e9 09 04 00 00          jmp    1690 <paranoid_exit>

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/Yi9gOW9f1GGwwUD6@hirez.programming.kicks-ass.net
arch/x86/entry/entry_64.S

index 6e53991..4faac48 100644 (file)
@@ -551,6 +551,9 @@ SYM_CODE_START(\asmsym)
        movq    $-1, ORIG_RAX(%rsp)     /* no syscall to restart */
        call    \cfunc
 
+       /* For some configurations \cfunc ends up being a noreturn. */
+       REACHABLE
+
        jmp     paranoid_exit
 
 _ASM_NOKPROBE(\asmsym)