Skip to content

Commit

Permalink
vmlinux.lds.h: Move Program Header restoration into NOTES macro
Browse files Browse the repository at this point in the history
In preparation for moving NOTES into RO_DATA, make the Program Header
assignment restoration be part of the NOTES macro itself.

Signed-off-by: Kees Cook <[email protected]>
Signed-off-by: Borislav Petkov <[email protected]>
Acked-by: Heiko Carstens <[email protected]> # s390
Cc: Andy Lutomirski <[email protected]>
Cc: Arnd Bergmann <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: Michael Ellerman <[email protected]>
Cc: Michal Simek <[email protected]>
Cc: Rick Edgecombe <[email protected]>
Cc: Segher Boessenkool <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: x86-ml <[email protected]>
Cc: Yoshinori Sato <[email protected]>
Link: https://lkml.kernel.org/r/[email protected]
  • Loading branch information
kees authored and suryasaimadhu committed Nov 4, 2019
1 parent 441110a commit fbe6a8e
Show file tree
Hide file tree
Showing 7 changed files with 17 additions and 19 deletions.
5 changes: 1 addition & 4 deletions arch/alpha/kernel/vmlinux.lds.S
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,7 @@ SECTIONS
swapper_pg_dir = SWAPPER_PGD;
_etext = .; /* End of text section */

NOTES :text :note
.dummy : {
*(.dummy)
} :text
NOTES

RODATA
EXCEPTION_TABLE(16)
Expand Down
4 changes: 1 addition & 3 deletions arch/ia64/kernel/vmlinux.lds.S
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,7 @@ SECTIONS {
/*
* Read-only data
*/
NOTES :text :note /* put .notes in text and mark in PT_NOTE */
code_continues : {
} :text /* switch back to regular program... */
NOTES

EXCEPTION_TABLE(16)

Expand Down
3 changes: 1 addition & 2 deletions arch/mips/kernel/vmlinux.lds.S
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,7 @@ SECTIONS
__stop___dbe_table = .;
}

NOTES NOTES_HEADERS
.dummy : { *(.dummy) } :text
NOTES

_sdata = .; /* Start of data section */
RODATA
Expand Down
4 changes: 1 addition & 3 deletions arch/powerpc/kernel/vmlinux.lds.S
Original file line number Diff line number Diff line change
Expand Up @@ -164,9 +164,7 @@ SECTIONS
#endif
EXCEPTION_TABLE(0)

NOTES :text :note
/* Restore program header away from PT_NOTE. */
.dummy : { *(.dummy) } :text
NOTES

/*
* Init sections discarded at runtime
Expand Down
4 changes: 1 addition & 3 deletions arch/s390/kernel/vmlinux.lds.S
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,7 @@ SECTIONS
_etext = .; /* End of text section */
} :text = 0x0700

NOTES :text :note

.dummy : { *(.dummy) } :text
NOTES

RO_DATA_SECTION(PAGE_SIZE)

Expand Down
3 changes: 1 addition & 2 deletions arch/x86/kernel/vmlinux.lds.S
Original file line number Diff line number Diff line change
Expand Up @@ -148,8 +148,7 @@ SECTIONS
_etext = .;
} :text = 0x9090

NOTES :text :note
.dummy : { *(.dummy) } :text
NOTES

EXCEPTION_TABLE(16)

Expand Down
13 changes: 11 additions & 2 deletions include/asm-generic/vmlinux.lds.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,18 @@

/*
* Only some architectures want to have the .notes segment visible in
* a separate PT_NOTE ELF Program Header.
* a separate PT_NOTE ELF Program Header. When this happens, it needs
* to be visible in both the kernel text's PT_LOAD and the PT_NOTE
* Program Headers. In this case, though, the PT_LOAD needs to be made
* the default again so that all the following sections don't also end
* up in the PT_NOTE Program Header.
*/
#ifdef EMITS_PT_NOTE
#define NOTES_HEADERS :text :note
#define NOTES_HEADERS_RESTORE __restore_ph : { *(.__restore_ph) } :text
#else
#define NOTES_HEADERS
#define NOTES_HEADERS_RESTORE
#endif

/* Align . to a 8 byte boundary equals to maximum function alignment. */
Expand Down Expand Up @@ -798,7 +806,8 @@
__start_notes = .; \
KEEP(*(.note.*)) \
__stop_notes = .; \
}
} NOTES_HEADERS \
NOTES_HEADERS_RESTORE

#define INIT_SETUP(initsetup_align) \
. = ALIGN(initsetup_align); \
Expand Down

0 comments on commit fbe6a8e

Please sign in to comment.