Received: by 2002:a05:6358:45e:b0:b5:b6eb:e1f9 with SMTP id 30csp862595rwe; Wed, 24 Aug 2022 10:10:47 -0700 (PDT) X-Google-Smtp-Source: AA6agR79tjMWIXCKSzHt20e27yxyF+8Uq4gFE842Px7pOcKmC4PPW143p/DRtitZBF11SyXIa28T X-Received: by 2002:a17:90b:1e08:b0:1f5:1f0d:3736 with SMTP id pg8-20020a17090b1e0800b001f51f0d3736mr9369360pjb.58.1661361047469; Wed, 24 Aug 2022 10:10:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661361047; cv=none; d=google.com; s=arc-20160816; b=CDCZ5vPlGwJ0UtK8A7aoYw2o6bK9c1igIc1Ka+yB6EDg3P/vC5nLhMEu97JQChH/ww Tq4CgJoVuGNECn6TjJnM8b6mee9sk6U1TrCMbVSS4CO3h9tEVUfLwhd+kj89pCU+GQDS mBMqCSURzhOPhah2FPFCS+H8HqLXnKuv1+jhfKX8kPOkWJjfE9yDoZQBjGasA8Y7E5fL qd5TMTs8xrQmrQQ758c5AxKYpB3EXv52NKIcKF8/D/waJNNmGp5LDm3XF3EHlQMTv1v0 VnoL1MYQj319IppZITnNUgFQneQdK2l7NrHMeVnJ77FLl0IIDZeup/g9pJCrBwgwoByK J+mA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=gGxXDwbKEJ0yko3Vb9vrS3rjtdtk6tHV0mhI9adXULo=; b=r8TLlCgrrSzmdYi1cCPhDgUifsfyJTl0JlhMGVTfRj8rrnhaXXsaAf+6a5gFNmHPPM aHMsoWIMJChJE6ScwVSPnfr4AfrcuKwwU8/QQnwjXx3X3FmU1qiQmQ/0f2lLFerKPg3n 3QpBsVqRm6tvnvGoE6QpRJwpDIEtxakHdW4pZtV3wPyTIsiiWZCMBqD+H6XKS9Ix6GAO ha+Oa0k/xSDHvbm8NuMiP0yz0Nk7BOms61WHOrPp9FcDmxbaolMif3lJIlzQxC23jZCb kw1kr+73ABdOqrdUKI8SZ3V2lJjT9K/MKWAs4LWi27JUzj+UgSZH6PmX9X+RfMEDZBzr 6T8g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@alien8.de header.s=dkim header.b=CcbQXShN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=alien8.de Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g26-20020aa79f1a000000b0052e4d8f39e7si14402845pfr.272.2022.08.24.10.10.35; Wed, 24 Aug 2022 10:10:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@alien8.de header.s=dkim header.b=CcbQXShN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=alien8.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233356AbiHXQna (ORCPT + 99 others); Wed, 24 Aug 2022 12:43:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38806 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239087AbiHXQn1 (ORCPT ); Wed, 24 Aug 2022 12:43:27 -0400 Received: from mail.skyhub.de (mail.skyhub.de [IPv6:2a01:4f8:190:11c2::b:1457]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 549271AF36; Wed, 24 Aug 2022 09:43:24 -0700 (PDT) Received: from zn.tnic (p200300ea971b9859329c23fffea6a903.dip0.t-ipconnect.de [IPv6:2003:ea:971b:9859:329c:23ff:fea6:a903]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.skyhub.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id ED6861EC06C1; Wed, 24 Aug 2022 18:43:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=dkim; t=1661359399; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references; bh=gGxXDwbKEJ0yko3Vb9vrS3rjtdtk6tHV0mhI9adXULo=; b=CcbQXShNX9wumDLPtpetSXFC5InAy7LlherUDUSrIX8ak3G4pCbWEu0HcOShG2J2PNMb0i b6uHXUhxY7laybG3Iojr6qyRdqYgVtvV3JIODBqsqdR/D1d+fgTeSGEo5Gp+uaJPwDAt58 Q0ewBx6MuAYN0GAK4cGByjk5G2SF1yM= Date: Wed, 24 Aug 2022 18:43:14 +0200 From: Borislav Petkov To: Peter Zijlstra Cc: X86 ML , Michael Matz , linux-toolchains@vger.kernel.org, LKML , Josh Poimboeuf Subject: [PATCH v2] x86/sev: Mark snp_abort() noreturn Message-ID: References: <20220824152420.20547-1-bp@alien8.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Aug 24, 2022 at 06:16:34PM +0200, Peter Zijlstra wrote: > If only there would be a trace of it left in the ELF file... Ah, there's that. --- From: Borislav Petkov Mark both the function prototype and definition as noreturn in order to prevent the compiler from doing transformations which confuse objtool like so: vmlinux.o: warning: objtool: sme_enable+0x71: unreachable instruction This triggers with gcc-12. Add it and sev_es_terminate() to the objtool noreturn tracking array too. Sort it while at it. Signed-off-by: Borislav Petkov --- arch/x86/include/asm/sev.h | 2 +- arch/x86/kernel/sev.c | 2 +- tools/objtool/check.c | 34 ++++++++++++++++++---------------- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/arch/x86/include/asm/sev.h b/arch/x86/include/asm/sev.h index 4a23e52fe0ee..ebc271bb6d8e 100644 --- a/arch/x86/include/asm/sev.h +++ b/arch/x86/include/asm/sev.h @@ -195,7 +195,7 @@ void snp_set_memory_shared(unsigned long vaddr, unsigned int npages); void snp_set_memory_private(unsigned long vaddr, unsigned int npages); void snp_set_wakeup_secondary_cpu(void); bool snp_init(struct boot_params *bp); -void snp_abort(void); +void __init __noreturn snp_abort(void); int snp_issue_guest_request(u64 exit_code, struct snp_req_data *input, unsigned long *fw_err); #else static inline void sev_es_ist_enter(struct pt_regs *regs) { } diff --git a/arch/x86/kernel/sev.c b/arch/x86/kernel/sev.c index 4f84c3f11af5..a428c62330d3 100644 --- a/arch/x86/kernel/sev.c +++ b/arch/x86/kernel/sev.c @@ -2112,7 +2112,7 @@ bool __init snp_init(struct boot_params *bp) return true; } -void __init snp_abort(void) +void __init __noreturn snp_abort(void) { sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SNP_UNSUPPORTED); } diff --git a/tools/objtool/check.c b/tools/objtool/check.c index 0cec74da7ffe..ad51689dfb41 100644 --- a/tools/objtool/check.c +++ b/tools/objtool/check.c @@ -162,32 +162,34 @@ static bool __dead_end_function(struct objtool_file *file, struct symbol *func, /* * Unfortunately these have to be hard coded because the noreturn - * attribute isn't provided in ELF data. + * attribute isn't provided in ELF data. Keep 'em sorted. */ static const char * const global_noreturns[] = { + "__invalid_creds", + "__module_put_and_kthread_exit", + "__reiserfs_panic", "__stack_chk_fail", - "panic", + "__ubsan_handle_builtin_unreachable", + "cpu_bringup_and_idle", + "cpu_startup_entry", "do_exit", + "do_group_exit", "do_task_dead", - "kthread_exit", - "make_task_dead", - "__module_put_and_kthread_exit", + "ex_handler_msr_mce", + "fortify_panic", "kthread_complete_and_exit", - "__reiserfs_panic", + "kthread_exit", + "kunit_try_catch_throw", "lbug_with_loc", - "fortify_panic", - "usercopy_abort", "machine_real_restart", + "make_task_dead", + "panic", "rewind_stack_and_make_dead", - "kunit_try_catch_throw", - "xen_start_kernel", - "cpu_bringup_and_idle", - "do_group_exit", + "sev_es_terminate", + "snp_abort", "stop_this_cpu", - "__invalid_creds", - "cpu_startup_entry", - "__ubsan_handle_builtin_unreachable", - "ex_handler_msr_mce", + "usercopy_abort", + "xen_start_kernel", }; if (!func) -- 2.35.1 -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette