* [jpoimboe:noreturn-start-kernel 27/28] arch/x86/kernel/doublefault_32.c:81 doublefault_shim() warn: ignoring unreachable code.
@ 2023-02-21 8:15 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2023-02-21 8:15 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Josh Poimboeuf <jpoimboe@kernel.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/jpoimboe/linux.git noreturn-start-kernel
head: 397ac3f03606c948ea7e0166e75be998f48899f8
commit: e2f525d08b1ac947d6db89beef1e3dc77e7825d1 [27/28] Make exc_double_fault __noreturn
:::::: branch date: 21 hours ago
:::::: commit date: 21 hours ago
config: i386-randconfig-m021 (https://download.01.org/0day-ci/archive/20230221/202302211629.IPKThxKV-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Link: https://lore.kernel.org/r/202302211629.IPKThxKV-lkp@intel.com/
smatch warnings:
arch/x86/kernel/doublefault_32.c:81 doublefault_shim() warn: ignoring unreachable code.
vim +81 arch/x86/kernel/doublefault_32.c
dc4e0021b00b5a arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-26 18
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 19 /*
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 20 * Called by double_fault with CR0.TS and EFLAGS.NT cleared. The CPU thinks
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 21 * we're running the doublefault task. Cannot return.
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 22 */
c29c775a554f70 arch/x86/kernel/doublefault_32.c Thomas Gleixner 2020-02-25 23 asmlinkage noinstr void __noreturn doublefault_shim(void)
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 24 {
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 25 unsigned long cr2;
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 26 struct pt_regs regs;
^1da177e4c3f41 arch/i386/kernel/doublefault.c Linus Torvalds 2005-04-16 27
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 28 BUILD_BUG_ON(sizeof(struct doublefault_stack) != PAGE_SIZE);
^1da177e4c3f41 arch/i386/kernel/doublefault.c Linus Torvalds 2005-04-16 29
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 30 cr2 = native_read_cr2();
^1da177e4c3f41 arch/i386/kernel/doublefault.c Linus Torvalds 2005-04-16 31
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 32 /* Reset back to the normal kernel task. */
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 33 force_reload_TR();
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 34 set_df_gdt_entry(smp_processor_id());
^1da177e4c3f41 arch/i386/kernel/doublefault.c Linus Torvalds 2005-04-16 35
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 36 trace_hardirqs_off();
^1da177e4c3f41 arch/i386/kernel/doublefault.c Linus Torvalds 2005-04-16 37
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 38 /*
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 39 * Fill in pt_regs. A downside of doing this in C is that the unwinder
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 40 * won't see it (no ENCODE_FRAME_POINTER), so a nested stack dump
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 41 * won't successfully unwind to the source of the double fault.
c29c775a554f70 arch/x86/kernel/doublefault_32.c Thomas Gleixner 2020-02-25 42 * The main dump from exc_double_fault() is fine, though, since it
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 43 * uses these regs directly.
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 44 *
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 45 * If anyone ever cares, this could be moved to asm.
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 46 */
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 47 regs.ss = TSS(ss);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 48 regs.__ssh = 0;
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 49 regs.sp = TSS(sp);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 50 regs.flags = TSS(flags);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 51 regs.cs = TSS(cs);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 52 /* We won't go through the entry asm, so we can leave __csh as 0. */
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 53 regs.__csh = 0;
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 54 regs.ip = TSS(ip);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 55 regs.orig_ax = 0;
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 56 regs.gs = TSS(gs);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 57 regs.__gsh = 0;
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 58 regs.fs = TSS(fs);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 59 regs.__fsh = 0;
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 60 regs.es = TSS(es);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 61 regs.__esh = 0;
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 62 regs.ds = TSS(ds);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 63 regs.__dsh = 0;
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 64 regs.ax = TSS(ax);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 65 regs.bp = TSS(bp);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 66 regs.di = TSS(di);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 67 regs.si = TSS(si);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 68 regs.dx = TSS(dx);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 69 regs.cx = TSS(cx);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 70 regs.bx = TSS(bx);
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 71
c29c775a554f70 arch/x86/kernel/doublefault_32.c Thomas Gleixner 2020-02-25 72 exc_double_fault(®s, 0, cr2);
^1da177e4c3f41 arch/i386/kernel/doublefault.c Linus Torvalds 2005-04-16 73
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 74 /*
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 75 * x86_32 does not save the original CR3 anywhere on a task switch.
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 76 * This means that, even if we wanted to return, we would need to find
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 77 * some way to reconstruct CR3. We could make a credible guess based
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 78 * on cpu_tlbstate, but that would be racy and would not account for
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 79 * PTI.
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 80 */
7d8d8cfdee9a7b arch/x86/kernel/doublefault_32.c Andy Lutomirski 2019-11-20 @81 panic("cannot return from double fault\n");
^1da177e4c3f41 arch/i386/kernel/doublefault.c Linus Torvalds 2005-04-16 82 }
^1da177e4c3f41 arch/i386/kernel/doublefault.c Linus Torvalds 2005-04-16 83
:::::: The code at line 81 was first introduced by commit
:::::: 7d8d8cfdee9a7bd6f9682f253fa98efdd8048a9e x86/doublefault/32: Rewrite the x86_32 #DF handler and unify with 64-bit
:::::: TO: Andy Lutomirski <luto@kernel.org>
:::::: CC: Ingo Molnar <mingo@kernel.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-02-21 8:16 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-21 8:15 [jpoimboe:noreturn-start-kernel 27/28] arch/x86/kernel/doublefault_32.c:81 doublefault_shim() warn: ignoring unreachable code kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.