Messages in this thread | | | From | "H.J. Lu" <> | Date | Thu, 30 Jan 2020 12:06:06 -0800 | Subject | Re: [PATCH] x86: Don't discard .exit.text and .exit.data at link-time |
| |
On Thu, Jan 30, 2020 at 11:58 AM Kees Cook <keescook@chromium.org> wrote: > > 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). >
It should work.
Thanks.
-- H.J.
| |