lkml.org 
[lkml]   [2021]   [Mar]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v2 04/17] module: ensure __cfi_check alignment
    On Thu, Mar 18, 2021 at 12:27 PM Nick Desaulniers
    <ndesaulniers@google.com> wrote:
    >
    > On Thu, Mar 18, 2021 at 10:11 AM Sami Tolvanen <samitolvanen@google.com> wrote:
    > >
    > > CONFIG_CFI_CLANG_SHADOW assumes the __cfi_check() function is page
    > > aligned and at the beginning of the .text section. While Clang would
    > > normally align the function correctly, it fails to do so for modules
    > > with no executable code.
    > >
    > > This change ensures the correct __cfi_check() location and
    > > alignment. It also discards the .eh_frame section, which Clang can
    > > generate with certain sanitizers, such as CFI.
    > >
    > > Link: https://bugs.llvm.org/show_bug.cgi?id=46293
    > > Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
    > > ---
    > > scripts/module.lds.S | 18 +++++++++++++++++-
    > > 1 file changed, 17 insertions(+), 1 deletion(-)
    > >
    > > diff --git a/scripts/module.lds.S b/scripts/module.lds.S
    > > index 168cd27e6122..93518579cf5d 100644
    > > --- a/scripts/module.lds.S
    > > +++ b/scripts/module.lds.S
    > > @@ -3,10 +3,19 @@
    > > * Archs are free to supply their own linker scripts. ld will
    > > * combine them automatically.
    > > */
    > > +#include <asm/page.h>
    > > +
    > > +#ifdef CONFIG_CFI_CLANG
    > > +# define ALIGN_CFI ALIGN(PAGE_SIZE)
    > > +#else
    > > +# define ALIGN_CFI
    > > +#endif
    > > +
    > > SECTIONS {
    > > /DISCARD/ : {
    > > *(.discard)
    > > *(.discard.*)
    > > + *(.eh_frame)
    >
    > Do we want to unconditionally discard this section from modules for
    > all arches/configs? I like how we conditionally do so on
    > SANITIZER_DISCARDS in include/asm-generic/vmlinux.lds.h for example.

    I think nothing should generate this section unless one of the
    sanitizers is enabled, but I'm fine with using the same logic as
    vmlinux.lds.h here. I'll change this in v3.

    Sami

    \
     
     \ /
      Last update: 2021-03-18 22:45    [W:2.257 / U:2.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site