Received: by 2002:a19:771d:0:0:0:0:0 with SMTP id s29csp1258015lfc; Wed, 1 Jun 2022 13:18:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzexqYcIDLz+UxJwoo4qfU1QkZp/xLoz9P26drkNA572Blj0mzdO5QLTirEJFEwTsbKOhyz X-Received: by 2002:a17:902:d491:b0:164:d43:1a23 with SMTP id c17-20020a170902d49100b001640d431a23mr1150781plg.155.1654114729563; Wed, 01 Jun 2022 13:18:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654114729; cv=none; d=google.com; s=arc-20160816; b=Sgs0j0O8MUKXILQ2GbE27W+BwkP1N7ccTO4rN8Hz0rok0VTpbyjE0Sb/1+SA+LKLwO NN2K3PPgPMdGynflZWxsZdReMGBGnC2HspN2jpbX3bIyAVsnC1AvBxd1WbrwQ9DQ9bWy rkpXPHqGaXf2JYiksIF3H+joIorxNx+gXXnkogMIHTRCJY1SGMyWU+lD5bkXFfldUvms ObL7CIP9Xi0iOIoUvSZupDTLE1wBGO6ifYr2RGS5OyYAsG/E0n/qEAULz374vtlsnloy Dq0HVNelIgHkWaX7VjfUyjvFSApq4QLGyugTp+1oC2y8ETpHizyRYEmVp5VRkRq73+A0 ZyhQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=RwSZaPX9vataXeVxvavMB0HbOt7ACsOSOAFrv/BXUvM=; b=cgN35MVERkthZot2uqxtH1VzUpjM2dUHFjG2CRMfTQM8f/00vPok/kYQhJljxy9QDo S9wmdeaWVZJWTNsaxrrHO9+yHSaFb2SRayxiJnoGRWjlZvY1DRbIGzYBB8bjiWsKKQZ1 5VozbWYhwGjCXny0bCdNQvLJm1s6oXxg957Y5ompG7F6Zf49UMwufFknRYcR7qjNEaVH m4lCn/gMfyaPxdEUB97T49wfcGYffMnW8edpSgsSUNXshg2+UCsHt0foOw3LpgxfJC6y w+xu1UCirgvAM1FN/hXB5fgCBOaR70qDZhmrPjIyH8WHcpJE+LpL1AME0SzM8vuKI2bB +Lgg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=FJP87CbK; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id m8-20020a170902bb8800b001638a2046e6si3551418pls.125.2022.06.01.13.18.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jun 2022 13:18:49 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=FJP87CbK; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 189CA24ACA0; Wed, 1 Jun 2022 12:32:00 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355951AbiFAQbL (ORCPT + 99 others); Wed, 1 Jun 2022 12:31:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48226 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243359AbiFAQbI (ORCPT ); Wed, 1 Jun 2022 12:31:08 -0400 Received: from sin.source.kernel.org (sin.source.kernel.org [IPv6:2604:1380:40e1:4800::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9903A985B2 for ; Wed, 1 Jun 2022 09:31:07 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sin.source.kernel.org (Postfix) with ESMTPS id E0B42CE1A31 for ; Wed, 1 Jun 2022 16:31:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E81E7C385A5; Wed, 1 Jun 2022 16:31:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1654101064; bh=Wd/2NFNek590H9keh7aFB7lvSPIhXat/8uywAb1mU1g=; h=From:To:Cc:Subject:Date:From; b=FJP87CbK7nOivETvw+t0Py2ks9O2+PhpEK2TzdOy/H1x9dX1nF3ggDdosgcdX5+13 Y0i/tMnO3otOmMEKYLv0tl+rA3kCWyF5e50n2OxyoyIZyq1mdyooukF3f3gKlbe/D4 LxsbjOJVATPhEgX/xF3dY6ofj0+dzbFBMxtv55bo0Stwjpm4c6SjU46WLp22ZF5KdP VuoZTaEXXIVc0vIQugGb732vIjSNlaeKOe7Zb2pkbiTDmz7gC4dFZAeFUKvniTIRmX azG59yOfKVFEHnTyCQ4zWBngB0CoLjtdq4Xwd15Dngr7yp3bcpCCNscIAK6R4z3UTy sZ8wgte4gSRuw== From: Josh Poimboeuf To: x86@kernel.org Cc: linux-kernel@vger.kernel.org, Steven Rostedt , Peter Zijlstra , kernel test robot Subject: [PATCH] x86/ftrace: Fix objtool vmlinux.o __fentry__ warning Date: Wed, 1 Jun 2022 09:30:53 -0700 Message-Id: X-Mailer: git-send-email 2.34.3 MIME-Version: 1.0 Content-type: text/plain Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.9 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable 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 The 'save_mcount_regs' macro does funny things with the frame pointer, which objtool doesn't approve of. So OBJECT_FILES_NON_STANDARD is used with CONFIG_FRAME_POINTER to tell objtool to skip the entire file when frame pointers are enabled. However, the file-wide OBJECT_FILES_NON_STANDARD annotation is now deprecated, because it doesn't work for IBT, where objtool runs on vmlinux.o. Use more fine-grained function-specific annotations instead. Fixes the following warning: vmlinux.o: warning: objtool: __fentry__+0x16: return with modified stack frame Fixes: ed53a0d97192 ("x86/alternative: Use .ibt_endbr_seal to seal indirect calls") Reported-by: kernel test robot Signed-off-by: Josh Poimboeuf --- arch/x86/kernel/Makefile | 4 ---- arch/x86/kernel/ftrace_64.S | 4 ++++ include/linux/objtool.h | 6 ++++++ tools/include/linux/objtool.h | 6 ++++++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index 03364dc40d8d..4c8b6ae802ac 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile @@ -36,10 +36,6 @@ KCSAN_SANITIZE := n OBJECT_FILES_NON_STANDARD_test_nx.o := y -ifdef CONFIG_FRAME_POINTER -OBJECT_FILES_NON_STANDARD_ftrace_$(BITS).o := y -endif - # If instrumentation of this dir is enabled, boot hangs during first second. # Probably could be more selective here, but note that files related to irqs, # boot, dumpstack/stacktrace, etc are either non-interesting or can lead to diff --git a/arch/x86/kernel/ftrace_64.S b/arch/x86/kernel/ftrace_64.S index 4ec13608d3c6..db7c396064ef 100644 --- a/arch/x86/kernel/ftrace_64.S +++ b/arch/x86/kernel/ftrace_64.S @@ -175,6 +175,7 @@ SYM_INNER_LABEL(ftrace_caller_end, SYM_L_GLOBAL) jmp ftrace_epilogue SYM_FUNC_END(ftrace_caller); +STACK_FRAME_NON_STANDARD_FP(ftrace_caller) SYM_FUNC_START(ftrace_epilogue) /* @@ -282,6 +283,7 @@ SYM_INNER_LABEL(ftrace_regs_caller_end, SYM_L_GLOBAL) jmp ftrace_epilogue SYM_FUNC_END(ftrace_regs_caller) +STACK_FRAME_NON_STANDARD_FP(ftrace_regs_caller) #else /* ! CONFIG_DYNAMIC_FTRACE */ @@ -311,6 +313,8 @@ trace: jmp ftrace_stub SYM_FUNC_END(__fentry__) EXPORT_SYMBOL(__fentry__) +STACK_FRAME_NON_STANDARD_FP(__fentry__) + #endif /* CONFIG_DYNAMIC_FTRACE */ #ifdef CONFIG_FUNCTION_GRAPH_TRACER diff --git a/include/linux/objtool.h b/include/linux/objtool.h index 6491fa8fba6d..15b940ec1eac 100644 --- a/include/linux/objtool.h +++ b/include/linux/objtool.h @@ -143,6 +143,12 @@ struct unwind_hint { .popsection .endm +.macro STACK_FRAME_NON_STANDARD_FP func:req +#ifdef CONFIG_FRAME_POINTER + STACK_FRAME_NON_STANDARD \func +#endif +.endm + .macro ANNOTATE_NOENDBR .Lhere_\@: .pushsection .discard.noendbr diff --git a/tools/include/linux/objtool.h b/tools/include/linux/objtool.h index 6491fa8fba6d..15b940ec1eac 100644 --- a/tools/include/linux/objtool.h +++ b/tools/include/linux/objtool.h @@ -143,6 +143,12 @@ struct unwind_hint { .popsection .endm +.macro STACK_FRAME_NON_STANDARD_FP func:req +#ifdef CONFIG_FRAME_POINTER + STACK_FRAME_NON_STANDARD \func +#endif +.endm + .macro ANNOTATE_NOENDBR .Lhere_\@: .pushsection .discard.noendbr -- 2.34.3