x86/mce: Mark mce_timed_out() noinstr
authorBorislav Petkov <bp@suse.de>
Tue, 2 Nov 2021 21:25:12 +0000 (22:25 +0100)
committerBorislav Petkov <bp@suse.de>
Mon, 13 Dec 2021 13:13:54 +0000 (14:13 +0100)
Fixes

  vmlinux.o: warning: objtool: do_machine_check()+0x482: call to mce_timed_out() leaves .noinstr.text section

Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lore.kernel.org/r/20211208111343.8130-12-bp@alien8.de
arch/x86/kernel/cpu/mce/core.c

index 044c94b090bfa94e9498fede2253af7454a38a8f..7023d6550688fa7987e4d20b011c96dd4e8922c2 100644 (file)
@@ -883,8 +883,13 @@ static cpumask_t mce_missing_cpus = CPU_MASK_ALL;
 /*
  * Check if a timeout waiting for other CPUs happened.
  */
-static int mce_timed_out(u64 *t, const char *msg)
+static noinstr int mce_timed_out(u64 *t, const char *msg)
 {
+       int ret = 0;
+
+       /* Enable instrumentation around calls to external facilities */
+       instrumentation_begin();
+
        /*
         * The others already did panic for some reason.
         * Bail out like in a timeout.
@@ -903,12 +908,17 @@ static int mce_timed_out(u64 *t, const char *msg)
                                         cpumask_pr_args(&mce_missing_cpus));
                        mce_panic(msg, NULL, NULL);
                }
-               return 1;
+               ret = 1;
+               goto out;
        }
        *t -= SPINUNIT;
+
 out:
        touch_nmi_watchdog();
-       return 0;
+
+       instrumentation_end();
+
+       return ret;
 }
 
 /*