Message ID | 168440808395.404.16801982965854981978.tip-bot2@tip-bot2 |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp410255vqo; Thu, 18 May 2023 04:16:24 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6y0RKAPVMNg6IkwQzWDQyUTRLxlw2AWhrJPSD2RFrwGr8HuUA1vGuuhqPM0d8KBBunYJfn X-Received: by 2002:a17:902:e9d4:b0:1a1:b3bb:cd5b with SMTP id 20-20020a170902e9d400b001a1b3bbcd5bmr2372303plk.62.1684408584241; Thu, 18 May 2023 04:16:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684408584; cv=none; d=google.com; s=arc-20160816; b=GqY3VdzSVgMGP3ajsb1BQDjp2Nkp0kY8jTZwxnleblvDIgfSiASJRbF353RfKpNT+Y 1ZpJDPiAOXbefLLx/9BEiZNv39/xNBwFyzkzMre5Sx4uIHb6MPAPZmpmzhk9HKb5JQcV MOA5ZU1+k9YoZ236jgr6WWl5KrdxJ/TTyTtokyE/NyomJd3jXvu6YrBJ5n+t6j8hcfWk F4Ip5yOTgwo55MTN3wX5DaZakqb7HuVR423Y78GzQkKKrHcWmYB8UH0HWCRep9dj8TOV +sQ28U+2XS6rZlTA1v9qIJY8/TCF0Y1cKz43KdyrLbmvdu0D+KMC78dzrP8RAiL/SHoY vtIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:robot-unsubscribe :robot-id:message-id:mime-version:references:in-reply-to:cc:subject :to:reply-to:sender:from:dkim-signature:dkim-signature:date; bh=t9feQN/oPOdQozTWLbO33Z/MGivxNLBiUuNSc3B3xDE=; b=aDlxtlzrTRl1ZZ48MqrkgW0vsPSCAyNhsbxxM8w/96Ne06ndO3fG5gzbq7Y9ZsFFTc xTi0yLTwKSYDTA1BtaCZIljDlV4ick7ZAhqy+ILbPxG+0gOWygfg6RTrq4x94q7KLea3 hOys9CCxp+RjYuTWFFnA5U8wGWCMg7BpWEqA2CSdkZ3JQGoZ34/eeXFkC4uLiKcj7ywR dzlT+PDfkYJQcpBD8cN9h5HqT/A7KjmPHptJKcJhtrjWibJb3QlR4zY6J3LQo603llxK dwVtyWoSKetwNbVJPH0qb/BGNjkRBaJsRUif4rbKsazC88bbCQ2TfQRFapied0oX/OvS 9adA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=IpwdkzFI; dkim=neutral (no key) header.i=@linutronix.de; 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=QUARANTINE dis=NONE) header.from=linutronix.de Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t9-20020a170902e84900b001a69d1be184si1038822plg.506.2023.05.18.04.16.07; Thu, 18 May 2023 04:16:24 -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=@linutronix.de header.s=2020 header.b=IpwdkzFI; dkim=neutral (no key) header.i=@linutronix.de; 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=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231265AbjERLJe (ORCPT <rfc822;pacteraone@gmail.com> + 99 others); Thu, 18 May 2023 07:09:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43590 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231191AbjERLJT (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Thu, 18 May 2023 07:09:19 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5F3192681; Thu, 18 May 2023 04:08:37 -0700 (PDT) Date: Thu, 18 May 2023 11:08:03 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1684408084; h=from:from:sender:sender:reply-to: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=t9feQN/oPOdQozTWLbO33Z/MGivxNLBiUuNSc3B3xDE=; b=IpwdkzFIzbuBd3Ax5wIaVfpqzTlgOjKaY01f2YHv3F9nv3edpaDqDlVrZRrTk/BS217Yfm YsZvxWDjAbnoLiMpdKVhNW5Uo9sIMrlR6eqkonj0frW3zyI9l9H1lE/SJ1Yv6GuM149NbR jXMZLAcQxjqGCnHOCIbuCyBaHdbq5iBchEZkGdOcoetQY8BRImYjJlVcGi2qej+o2MWRoa 4ihqbxEZFxw8dKXLh3LGjTnCRbOZXZ5ADdYCEsdBqn9ZX5BAoeO3c/51V829AmgdQTG4f4 Z3QRmUO+R1VMagJzxbq1eGY352ZvWg+qjGsSUnGsiH6SMtNKJiuHxH9aMKlTjA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1684408084; h=from:from:sender:sender:reply-to: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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=t9feQN/oPOdQozTWLbO33Z/MGivxNLBiUuNSc3B3xDE=; b=6NOCXx0zMgaO/wVbQA7s8ScMJbOhvoh5GZaqrnHdTW9QzADfRr9IZ/YG5u6afIBRXKz7me LMr4d0ORn+U366Bg== From: "tip-bot2 for ndesaulniers@google.com" <tip-bot2@linutronix.de> Sender: tip-bot2@linutronix.de Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: objtool/core] start_kernel: Add __no_stack_protector function attribute Cc: Nathan Chancellor <nathan@kernel.org>, Michael Ellerman <mpe@ellerman.id.au>, Miguel Ojeda <ojeda@kernel.org>, "Peter Zijlstra (Intel)" <peterz@infradead.org>, Nick Desaulniers <ndesaulniers@google.com>, Josh Poimboeuf <jpoimboe@kernel.org>, x86@kernel.org, linux-kernel@vger.kernel.org In-Reply-To: <20230412-no_stackp-v2-1-116f9fe4bbe7@google.com> References: <20230412-no_stackp-v2-1-116f9fe4bbe7@google.com> MIME-Version: 1.0 Message-ID: <168440808395.404.16801982965854981978.tip-bot2@tip-bot2> Robot-ID: <tip-bot2@linutronix.de> Robot-Unsubscribe: Contact <mailto:tglx@linutronix.de> to get blacklisted from these emails Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE 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: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1766230415819907053?= X-GMAIL-MSGID: =?utf-8?q?1766230415819907053?= |
Series |
[tip:,objtool/core] start_kernel: Add __no_stack_protector function attribute
|
|
Commit Message
tip-bot2 for Thomas Gleixner
May 18, 2023, 11:08 a.m. UTC
The following commit has been merged into the objtool/core branch of tip: Commit-ID: 514ca14ed5444b911de59ed3381dfd195d99fe4b Gitweb: https://git.kernel.org/tip/514ca14ed5444b911de59ed3381dfd195d99fe4b Author: ndesaulniers@google.com <ndesaulniers@google.com> AuthorDate: Mon, 17 Apr 2023 15:00:05 -07:00 Committer: Josh Poimboeuf <jpoimboe@kernel.org> CommitterDate: Tue, 16 May 2023 06:28:15 -07:00 start_kernel: Add __no_stack_protector function attribute Back during the discussion of commit a9a3ed1eff36 ("x86: Fix early boot crash on gcc-10, third try") we discussed the need for a function attribute to control the omission of stack protectors on a per-function basis; at the time Clang had support for no_stack_protector but GCC did not. This was fixed in gcc-11. Now that the function attribute is available, let's start using it. Callers of boot_init_stack_canary need to use this function attribute unless they're compiled with -fno-stack-protector, otherwise the canary stored in the stack slot of the caller will differ upon the call to boot_init_stack_canary. This will lead to a call to __stack_chk_fail() then panic. Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94722 Link: https://lore.kernel.org/all/20200316130414.GC12561@hirez.programming.kicks-ass.net/ Tested-by: Nathan Chancellor <nathan@kernel.org> Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc) Acked-by: Miguel Ojeda <ojeda@kernel.org> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> Link: https://lore.kernel.org/r/20230412-no_stackp-v2-1-116f9fe4bbe7@google.com Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org> Signed-off-by: ndesaulniers@google.com <ndesaulniers@google.com> --- arch/powerpc/kernel/smp.c | 1 + include/linux/compiler_attributes.h | 12 ++++++++++++ init/main.c | 3 ++- 3 files changed, 15 insertions(+), 1 deletion(-)
Comments
On Thu, May 18, 2023 at 11:08:03AM -0000, tip-bot2 for ndesaulniers@google.com wrote: > The following commit has been merged into the objtool/core branch of tip: > > Commit-ID: 514ca14ed5444b911de59ed3381dfd195d99fe4b > Gitweb: https://git.kernel.org/tip/514ca14ed5444b911de59ed3381dfd195d99fe4b > Author: ndesaulniers@google.com <ndesaulniers@google.com> > AuthorDate: Mon, 17 Apr 2023 15:00:05 -07:00 > Committer: Josh Poimboeuf <jpoimboe@kernel.org> Hi Nick, Josh, Peter, Do you have an ETA for when this will make its way to Linus' tree? clang-17 built kernels have failed to boot since [0], so it would be nice to get this in sooner rather than later if possible. [0]: https://lore.kernel.org/all/7194ed8a989a85b98d92e62df660f4a90435a723.1681342859.git.jpoimboe@kernel.org/ Thanks, David
On Fri, May 19, 2023 at 10:11 AM David Vernet <void@manifault.com> wrote: > > On Thu, May 18, 2023 at 11:08:03AM -0000, tip-bot2 for ndesaulniers@google.com wrote: > > The following commit has been merged into the objtool/core branch of tip: > > > > Commit-ID: 514ca14ed5444b911de59ed3381dfd195d99fe4b > > Gitweb: https://git.kernel.org/tip/514ca14ed5444b911de59ed3381dfd195d99fe4b > > Author: ndesaulniers@google.com <ndesaulniers@google.com> > > AuthorDate: Mon, 17 Apr 2023 15:00:05 -07:00 > > Committer: Josh Poimboeuf <jpoimboe@kernel.org> > > Hi Nick, Josh, Peter, > > Do you have an ETA for when this will make its way to Linus' tree? > clang-17 built kernels have failed to boot since [0], so it would be > nice to get this in sooner rather than later if possible. David, Can you confirm that your version of clang-17 is updated? clang-17 is unreleased; ToT will become clang-17. https://reviews.llvm.org/rGfc4494dffa5422b2be5442c235554e76bed79c8a should have fixed any boot failures related to stack protectors. That is to say that Josh's series is irrelevant to anyone using either an existing release of clang, or something closer to ToT than April 13. LLVM commit fc4494dffa54 ("[StackProtector] don't check stack protector before calling nounwind functions") landed April 13, so please check that your build of clang-17 is after that date. Either way, thanks for testing with clang, and the report. You can always file a bug at our issue tracker: https://github.com/ClangBuiltLinux/linux/issues or see our page for more ways to get in touch: https://clangbuiltlinux.github.io/ We're very active on our mailing list, and on IRC. > > [0]: https://lore.kernel.org/all/7194ed8a989a85b98d92e62df660f4a90435a723.1681342859.git.jpoimboe@kernel.org/ > > Thanks, > David
On Fri, May 19, 2023 at 10:18:40AM -0700, Nick Desaulniers wrote: > On Fri, May 19, 2023 at 10:11 AM David Vernet <void@manifault.com> wrote: > > > > On Thu, May 18, 2023 at 11:08:03AM -0000, tip-bot2 for ndesaulniers@google.com wrote: > > > The following commit has been merged into the objtool/core branch of tip: > > > > > > Commit-ID: 514ca14ed5444b911de59ed3381dfd195d99fe4b > > > Gitweb: https://git.kernel.org/tip/514ca14ed5444b911de59ed3381dfd195d99fe4b > > > Author: ndesaulniers@google.com <ndesaulniers@google.com> > > > AuthorDate: Mon, 17 Apr 2023 15:00:05 -07:00 > > > Committer: Josh Poimboeuf <jpoimboe@kernel.org> > > > > Hi Nick, Josh, Peter, > > > > Do you have an ETA for when this will make its way to Linus' tree? > > clang-17 built kernels have failed to boot since [0], so it would be > > nice to get this in sooner rather than later if possible. > > David, > Can you confirm that your version of clang-17 is updated? clang-17 is > unreleased; ToT will become clang-17. > > https://reviews.llvm.org/rGfc4494dffa5422b2be5442c235554e76bed79c8a > should have fixed any boot failures related to stack protectors. That > is to say that Josh's series is irrelevant to anyone using either an > existing release of clang, or something closer to ToT than April 13. Thanks for the quick reply, Nick. The latest clang-17 does indeed fix the issue. Apologies for not trying that first -- I was using the only tagged verson of clang-17 (which admittedly is not a released version), and figured it wasn't a compiler bug given that the assembly looked sane, compilers are allowed to do all sorts of interesting things with __noreturn, and that [1] removes -fstack-protector from start_kernel() altogether. [1]: https://lore.kernel.org/lkml/20230412-no_stackp-v1-1-46a69b507a4b@google.com/ > LLVM commit fc4494dffa54 ("[StackProtector] don't check stack > protector before calling nounwind functions") > landed April 13, so please check that your build of clang-17 is after that date. > > Either way, thanks for testing with clang, and the report. You can > always file a bug at our issue tracker: > https://github.com/ClangBuiltLinux/linux/issues or see our page for > more ways to get in touch: > https://clangbuiltlinux.github.io/ > We're very active on our mailing list, and on IRC. Ack, thanks for letting me know for next time. - David
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index 265801a..6903a72 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c @@ -1605,6 +1605,7 @@ static void add_cpu_to_masks(int cpu) } /* Activate a secondary processor. */ +__no_stack_protector void start_secondary(void *unused) { unsigned int cpu = raw_smp_processor_id(); diff --git a/include/linux/compiler_attributes.h b/include/linux/compiler_attributes.h index e659cb6..8486476 100644 --- a/include/linux/compiler_attributes.h +++ b/include/linux/compiler_attributes.h @@ -256,6 +256,18 @@ #define __noreturn __attribute__((__noreturn__)) /* + * Optional: only supported since GCC >= 11.1, clang >= 7.0. + * + * gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-no_005fstack_005fprotector-function-attribute + * clang: https://clang.llvm.org/docs/AttributeReference.html#no-stack-protector-safebuffers + */ +#if __has_attribute(__no_stack_protector__) +# define __no_stack_protector __attribute__((__no_stack_protector__)) +#else +# define __no_stack_protector +#endif + +/* * Optional: not supported by gcc. * * clang: https://clang.llvm.org/docs/AttributeReference.html#overloadable diff --git a/init/main.c b/init/main.c index af50044..c445c1f 100644 --- a/init/main.c +++ b/init/main.c @@ -877,7 +877,8 @@ static void __init print_unknown_bootoptions(void) memblock_free(unknown_options, len); } -asmlinkage __visible void __init __no_sanitize_address __noreturn start_kernel(void) +asmlinkage __visible __init __no_sanitize_address __noreturn __no_stack_protector +void start_kernel(void) { char *command_line; char *after_dashes;