Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 32fb2fc5 authored by Heiko Carstens's avatar Heiko Carstens Committed by Martin Schwidefsky
Browse files

vmlinux.lds.h: allow arch specific handling of ro_after_init data section



commit c74ba8b3 ("arch: Introduce post-init read-only memory")
introduced the __ro_after_init attribute which allows to add variables
to the ro_after_init data section.

This new section was added to rodata, even though it contains writable
data. This in turn causes problems on architectures which mark the
page table entries read-only that point to rodata very early.

This patch allows architectures to implement an own handling of the
.data..ro_after_init section.
Usually that would be:
- mark the rodata section read-only very early
- mark the ro_after_init section read-only within mark_rodata_ro

Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Reviewed-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 64f31d58
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -249,6 +249,14 @@
	*(.data..init_task)						\
	VMLINUX_SYMBOL(__end_init_task) = .;

/*
 * Allow architectures to handle ro_after_init data on their
 * own by defining an empty RO_AFTER_INIT_DATA.
 */
#ifndef RO_AFTER_INIT_DATA
#define RO_AFTER_INIT_DATA *(.data..ro_after_init)
#endif

/*
 * Read only Data
 */
@@ -257,7 +265,7 @@
	.rodata           : AT(ADDR(.rodata) - LOAD_OFFSET) {		\
		VMLINUX_SYMBOL(__start_rodata) = .;			\
		*(.rodata) *(.rodata.*)					\
		*(.data..ro_after_init)	/* Read only after init */	\
		RO_AFTER_INIT_DATA	/* Read only after init */	\
		*(__vermagic)		/* Kernel version magic */	\
		. = ALIGN(8);						\
		VMLINUX_SYMBOL(__start___tracepoints_ptrs) = .;		\