From: Kees Cook <keescook@chromium.org>
To: "H.J. Lu" <hjl.tools@gmail.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
Andy Lutomirski <luto@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Thomas Lendacky <Thomas.Lendacky@amd.com>,
Sami Tolvanen <samitolvanen@google.com>,
Heiko Carstens <heiko.carstens@de.ibm.com>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
"H . Peter Anvin" <hpa@zytor.com>,
the arch/x86 maintainers <x86@kernel.org>,
Yu-cheng Yu <yu-cheng.yu@intel.com>
Subject: Re: [PATCH] x86: Don't discard .exit.text and .exit.data at link-time
Date: Thu, 30 Jan 2020 11:58:54 -0800 [thread overview]
Message-ID: <202001301152.DF108B6CC@keescook> (raw)
In-Reply-To: <CAMe9rOrrrZFWgVpsKAWjHKzVh3ZziFLs2ua0m0Ewymrjs-b+EA@mail.gmail.com>
On Thu, Jan 30, 2020 at 11:45:15AM -0800, H.J. Lu wrote:
> On Thu, Jan 30, 2020 at 11:40 AM Kees Cook <keescook@chromium.org> wrote:
> >
> > On Thu, Jan 30, 2020 at 10:00:48AM -0800, H.J. Lu wrote:
> > > Since .exit.text and .exit.data sections are discarded at runtime, we
> > > should undefine EXIT_TEXT and EXIT_DATA to exclude .exit.text and
> > > .exit.data sections from default discarded sections.
> >
> > This is just a correctness fix, yes? The EXIT_TEXT and EXIT_DATA were
> > already included before the /DISCARD/ section here, so there's no
> > behavioral change with this patch, correct?
>
> That is correct. I was confused by EXIT_TEXT and EXIT_DATA in generic
> DISCARDS. My patch just makes it more explicit.
Okay, so to that end and because this isn't arch-specific, I'd like to
see this be a behavioral flag, and then the generic DISCARDS macro can
be adjusted. This lets all architectures implement this without having
to scatter undef/define lines in each arch.
Something like this:
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index e00f41aa8ec4..f242d3b4814d 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -894,11 +894,17 @@
* section definitions so that such archs put those in earlier section
* definitions.
*/
-#define DISCARDS \
- /DISCARD/ : { \
+#ifdef RUNTIME_DISCARD_EXIT
+#define EXIT_DISCARDS
+#else
+#define EXIT_DISCARDS \
EXIT_TEXT \
EXIT_DATA \
- EXIT_CALL \
+ EXIT_CALL
+#endif
+#define DISCARDS \
+ /DISCARD/ : { \
+ EXIT_DISCARDS \
*(.discard) \
*(.discard.*) \
*(.modinfo) \
Then x86 and all other architectures that do this can just use
#define RUNTIME_DISCARD_EXIT
at the top (like EMITS_PT_NOTE, etc).
-Kees
> > > --- a/arch/x86/kernel/vmlinux.lds.S
> > > +++ b/arch/x86/kernel/vmlinux.lds.S
> > > @@ -416,6 +416,12 @@ SECTIONS
> > > STABS_DEBUG
> > > DWARF_DEBUG
> > >
> > > + /* Sections to be discarded. EXIT_TEXT and EXIT_DATA discard at runtime.
> > > + * not link time. */
> > > +#undef EXIT_TEXT
> > > +#define EXIT_TEXT
> > > +#undef EXIT_DATA
> > > +#define EXIT_DATA
> > > DISCARDS
> > > /DISCARD/ : {
> > > *(.eh_frame)
--
Kees Cook
next prev parent reply other threads:[~2020-01-30 19:58 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-30 18:00 [PATCH] x86: Don't discard .exit.text and .exit.data at link-time H.J. Lu
2020-01-30 19:40 ` Kees Cook
2020-01-30 19:45 ` H.J. Lu
2020-01-30 19:58 ` Kees Cook [this message]
2020-01-30 20:06 ` H.J. Lu
2020-01-30 20:47 ` [PATCH] Add RUNTIME_DISCARD_EXIT to generic DISCARDS H.J. Lu
2020-01-30 22:04 ` Kees Cook
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=202001301152.DF108B6CC@keescook \
--to=keescook@chromium.org \
--cc=Thomas.Lendacky@amd.com \
--cc=bp@alien8.de \
--cc=heiko.carstens@de.ibm.com \
--cc=hjl.tools@gmail.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=samitolvanen@google.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
--cc=yu-cheng.yu@intel.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.