All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] arm64/vdso: Discard .note.gnu.property sections in vDSO
@ 2021-04-23 20:51 ` Bill Wendling
  0 siblings, 0 replies; 28+ messages in thread
From: Bill Wendling @ 2021-04-23 20:51 UTC (permalink / raw)
  To: Kees Cook, Ard Biesheuvel, Catalin Marinas, Will Deacon,
	linux-kernel, linux-arm-kernel
  Cc: Bill Wendling

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 4caffe6a28d31 ("x86/vdso: Discard .note.gnu.property
sections in vDSO"), but for arm64.

Signed-off-by: Bill Wendling <morbo@google.com>
---
 arch/arm64/kernel/vdso/vdso.lds.S | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/kernel/vdso/vdso.lds.S b/arch/arm64/kernel/vdso/vdso.lds.S
index 61dbb4c838ef..a5e61e09ea92 100644
--- a/arch/arm64/kernel/vdso/vdso.lds.S
+++ b/arch/arm64/kernel/vdso/vdso.lds.S
@@ -31,6 +31,13 @@ SECTIONS
 	.gnu.version_d	: { *(.gnu.version_d) }
 	.gnu.version_r	: { *(.gnu.version_r) }
 
+	/*
+	 * Discard .note.gnu.property sections which are unused and have
+	 * different alignment requirement from vDSO note sections.
+	 */
+	/DISCARD/	: {
+		*(.note.GNU-stack .note.gnu.property)
+	}
 	.note		: { *(.note.*) }		:text	:note
 
 	. = ALIGN(16);
@@ -48,7 +55,6 @@ SECTIONS
 	PROVIDE(end = .);
 
 	/DISCARD/	: {
-		*(.note.GNU-stack)
 		*(.data .data.* .gnu.linkonce.d.* .sdata*)
 		*(.bss .sbss .dynbss .dynsbss)
 		*(.eh_frame .eh_frame_hdr)
-- 
2.31.1.498.g6c1eba8ee3d-goog


^ permalink raw reply related	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2021-04-30 17:59 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-23 20:51 [PATCH] arm64/vdso: Discard .note.gnu.property sections in vDSO Bill Wendling
2021-04-23 20:51 ` Bill Wendling
2021-04-27 22:58 ` Kees Cook
2021-04-27 22:58   ` Kees Cook
2021-04-28  8:51   ` Ard Biesheuvel
2021-04-28  8:51     ` Ard Biesheuvel
2021-04-28 17:28 ` Catalin Marinas
2021-04-28 17:28   ` Catalin Marinas
2021-04-28 17:40   ` Mark Brown
2021-04-28 17:40     ` Mark Brown
2021-04-28 19:21     ` Bill Wendling
2021-04-28 19:21       ` Bill Wendling
2021-04-28 19:31       ` Bill Wendling
2021-04-28 19:31         ` Bill Wendling
2021-04-29  7:54         ` Szabolcs Nagy
2021-04-29  7:54           ` Szabolcs Nagy
2021-04-29  9:23           ` Bill Wendling
2021-04-29  9:23             ` Bill Wendling
2021-04-29  9:50             ` Szabolcs Nagy
2021-04-29  9:50               ` Szabolcs Nagy
2021-04-29 18:52               ` Bill Wendling
2021-04-29 18:52                 ` Bill Wendling
2021-04-30  8:16                 ` Szabolcs Nagy
2021-04-30  8:16                   ` Szabolcs Nagy
2021-04-30  8:29                   ` Bill Wendling
2021-04-30  8:29                     ` Bill Wendling
2021-04-30 17:57 ` Catalin Marinas
2021-04-30 17:57   ` Catalin Marinas

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.