• Bill Wendling's avatar
    arm64/vdso: Discard .note.gnu.property sections in vDSO · 38870802
    Bill Wendling authored
    The arm64 assembler in binutils 2.32 and above generates a program
    property note in a note section, .note.gnu.property, to encode used x86
    ISAs and features. But the kernel linker script only contains a single
    NOTE segment:
    
      PHDRS
      {
        text    PT_LOAD    FLAGS(5) FILEHDR PHDRS; /* PF_R|PF_X */
        dynamic PT_DYNAMIC FLAGS(4);               /* PF_R */
        note    PT_NOTE    FLAGS(4);               /* PF_R */
      }
    
    The NOTE segment generated by the vDSO linker script is aligned to 4 bytes.
    But the .note.gnu.property section must be aligned to 8 bytes on arm64.
    
      $ readelf -n vdso64.so
    
      Displaying notes found in: .note
        Owner                Data size      Description
        Linux                0x00000004     Unknown note type: (0x00000000)
         description data: 06 00 00 00
      readelf: Warning: note with invalid namesz and/or descsz found at offset 0x20
      readelf: Warning:  type: 0x78, namesize: 0x00000100, descsize: 0x756e694c, alignment: 8
    
    Since the note.gnu.property section in the vDSO is not checked by the
    dynamic linker, discard the .note.gnu.property sections in the vDSO.
    
    Similar to commit 4caffe6a ("x86/vdso: Discard .note.gnu.property
    sections in vDSO"), but for arm64.
    Signed-off-by: default avatarBill Wendling <morbo@google.com>
    Reviewed-by: default avatarKees Cook <keescook@chromium.org>
    Acked-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Link: https://lore.kernel.org/r/20210423205159.830854-1-morbo@google.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    38870802
vdso.lds.S 1.99 KB