From: David Laight <David.Laight@ACULAB.COM>
To: 'Brian Gerst' <brgerst@gmail.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"x86@kernel.org" <x86@kernel.org>, Ingo Molnar <mingo@kernel.org>,
"H . Peter Anvin" <hpa@zytor.com>,
Thomas Gleixner <tglx@linutronix.de>,
Borislav Petkov <bp@alien8.de>, Ard Biesheuvel <ardb@kernel.org>,
Uros Bizjak <ubizjak@gmail.com>
Subject: RE: [PATCH v5 00/16] x86-64: Stack protector and percpu improvements
Date: Sat, 9 Nov 2024 21:27:06 +0000 [thread overview]
Message-ID: <dee56ade8f2841c0b276a0b9af221981@AcuMS.aculab.com> (raw)
In-Reply-To: <CAMzpN2h_4cKa7oxPQ0M169xQMKCtZCj9bTggBd4Cyk8j18tf=g@mail.gmail.com>
From: Brian Gerst
> Sent: 09 November 2024 15:11
>
> On Sat, Nov 9, 2024 at 4:31 AM David Laight <David.Laight@aculab.com> wrote:
> >
> > From: Brian Gerst
> > > Sent: 05 November 2024 15:58
> > >
> > > Currently, x86-64 uses an unusual percpu layout, where the percpu section
> > > is linked at absolute address 0. The reason behind this is that older GCC
> > > versions placed the stack protector (if enabled) at a fixed offset from the
> > > GS segment base. Since the GS segement is also used for percpu variables,
> > > this forced the current layout.
> > >
> > > GCC since version 8.1 supports a configurable location for the stack
> > > protector value, which allows removal of the restriction on how the percpu
> > > section is linked. This allows the percpu section to be linked normally,
> > > like other architectures. In turn, this allows removal of code that was
> > > needed to support the zero-based percpu section.
> > >
> > > v5:
> > > - Added two patches from Ard Biesheuvel to make stack protector work
> > > properly when compiling with clang.
> > > - Raise minimum GCC version to 8.1 for x86.
> > > - Drop objtool conversion code.
> >
> > Is there any actual need to raise the GCC level?
> > Isn't it enough just to disable stack protection with older compilers?
> > The percpu layout can then always be the new (sane) one.
>
> Earlier versions of this series did make stack protector support
> conditional on newer compilers. That got rejected. I then added
> objtool support to convert the code old compilers produced. That also
> got rejected. I guess I can't please everyone.
I certainly wouldn't have bothered hacking objtool.
> > Is there even a selectable CONFIG_STACK_PROTECTOR?
> > Can than depend on gcc >= 8.1 for x86-64?
>
> Yes, stack protector support is optional, but practically all distro
> kernels enable it.
They include all sorts of stuff that slows things down :-)
But I'd rather be able to build and test kernels than have the stack protector.
> > I've a slight vested interest in that the system I test kernels on
> > has gcc 7.5.0 installed :-)
>
> What distro is on that system? Is it still actively supported?
The system in running Ubuntu 18.04 LTS - and still receives updates.
I do run locally build kernels on it, but I could just be building kernels.
Seems a shame to force an update for something I can just deselect.
For reference RHEL7 is still supported but has a 4.8.5 compiler.
So it is a long time since that has self-hosted kernels.
We build software for release on Centos-7 as an easy way to get an old glibc (etc),
although buildroot/busybox (x86-64) 'distribution' has to use a newer
compiler - the grub build fails well before you get to a kernel!
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
next prev parent reply other threads:[~2024-11-09 21:27 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-05 15:57 [PATCH v5 00/16] x86-64: Stack protector and percpu improvements Brian Gerst
2024-11-05 15:57 ` [PATCH v5 01/16] x86/stackprotector: Work around strict Clang TLS symbol requirements Brian Gerst
2024-11-05 19:30 ` Nathan Chancellor
2024-11-08 14:43 ` [tip: x86/urgent] " tip-bot2 for Ard Biesheuvel
2024-12-06 11:51 ` [PATCH v5 01/16] " Oleg Nesterov
2024-12-06 14:09 ` Brian Gerst
2024-12-06 14:28 ` Oleg Nesterov
2024-12-06 12:32 ` [PATCH] x86/stackprotector: fix build failure with CONFIG_STACKPROTECTOR=n Oleg Nesterov
2024-12-06 13:17 ` Ard Biesheuvel
2024-12-06 14:21 ` Oleg Nesterov
2024-12-06 14:37 ` Ard Biesheuvel
2024-12-06 15:12 ` Brian Gerst
2024-12-06 15:17 ` Ard Biesheuvel
2025-03-10 21:44 ` Borislav Petkov
2025-03-10 22:19 ` Ard Biesheuvel
2025-03-11 10:23 ` Borislav Petkov
2025-03-11 10:37 ` Ard Biesheuvel
2025-03-11 11:21 ` Borislav Petkov
2025-03-11 13:13 ` Borislav Petkov
2025-03-11 14:37 ` Oleg Nesterov
2025-03-11 17:46 ` Borislav Petkov
2025-03-11 18:10 ` Oleg Nesterov
2025-03-11 19:01 ` Borislav Petkov
2025-03-11 19:24 ` Oleg Nesterov
2025-03-11 21:27 ` Brian Gerst
2025-03-11 21:42 ` Oleg Nesterov
2025-03-11 21:47 ` Brian Gerst
2025-03-12 9:28 ` Borislav Petkov
2024-11-05 15:57 ` [PATCH v5 02/16] x86: Raise minimum GCC version to 8.1 Brian Gerst
2024-12-05 11:44 ` Ard Biesheuvel
2024-12-05 16:05 ` Brian Gerst
2025-01-14 16:25 ` Borislav Petkov
2024-11-05 15:57 ` [PATCH v5 03/16] x86/stackprotector: Remove stack protector test scripts Brian Gerst
2024-11-07 13:19 ` Uros Bizjak
2024-11-05 15:57 ` [PATCH v5 04/16] x86/boot: Disable stack protector for early boot code Brian Gerst
2024-11-05 15:57 ` [PATCH v5 05/16] x86/pvh: Use fixed_percpu_data for early boot GSBASE Brian Gerst
2024-11-07 14:30 ` Uros Bizjak
2024-11-05 15:57 ` [PATCH v5 06/16] x86/relocs: Handle R_X86_64_REX_GOTPCRELX relocations Brian Gerst
2024-11-07 11:20 ` Uros Bizjak
2024-11-07 11:27 ` Brian Gerst
2024-11-07 11:31 ` Uros Bizjak
2024-11-05 15:57 ` [PATCH v5 07/16] x86/module: Deal with GOT based stack cookie load on Clang < 17 Brian Gerst
2024-11-09 9:36 ` David Laight
2024-11-05 15:57 ` [PATCH v5 08/16] x86/stackprotector/64: Convert to normal percpu variable Brian Gerst
2024-11-07 13:29 ` Uros Bizjak
2025-02-15 14:27 ` Borislav Petkov
2025-02-15 17:38 ` Brian Gerst
2025-02-15 21:18 ` Borislav Petkov
2025-02-15 22:10 ` Brian Gerst
2025-02-16 8:33 ` Borislav Petkov
2024-11-05 15:57 ` [PATCH v5 09/16] x86/percpu/64: Use relative percpu offsets Brian Gerst
2024-11-07 11:28 ` Uros Bizjak
2024-11-07 12:05 ` Brian Gerst
2024-11-07 13:34 ` Uros Bizjak
2024-11-05 15:57 ` [PATCH v5 10/16] x86/percpu/64: Remove fixed_percpu_data Brian Gerst
2024-11-07 13:32 ` Uros Bizjak
2024-11-05 15:57 ` [PATCH v5 11/16] x86/boot/64: Remove inverse relocations Brian Gerst
2024-11-05 15:57 ` [PATCH v5 12/16] x86/percpu/64: Remove INIT_PER_CPU macros Brian Gerst
2024-11-07 13:59 ` Uros Bizjak
2024-11-05 15:57 ` [PATCH v5 13/16] percpu: Remove PER_CPU_FIRST_SECTION Brian Gerst
2024-11-05 15:57 ` [PATCH v5 14/16] percpu: Remove PERCPU_VADDR() Brian Gerst
2024-11-05 15:58 ` [PATCH v5 15/16] percpu: Remove __per_cpu_load Brian Gerst
2024-11-05 15:58 ` [PATCH v5 16/16] kallsyms: Remove KALLSYMS_ABSOLUTE_PERCPU Brian Gerst
2024-11-09 9:31 ` [PATCH v5 00/16] x86-64: Stack protector and percpu improvements David Laight
2024-11-09 15:11 ` Brian Gerst
2024-11-09 21:27 ` David Laight [this message]
2025-01-04 9:14 ` Ard Biesheuvel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=dee56ade8f2841c0b276a0b9af221981@AcuMS.aculab.com \
--to=david.laight@aculab.com \
--cc=ardb@kernel.org \
--cc=bp@alien8.de \
--cc=brgerst@gmail.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=tglx@linutronix.de \
--cc=ubizjak@gmail.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox