[PATCH AUTOSEL 5.15 09/24] s390: expicitly align _edata and _end symbols on page boundary

From: Sasha Levin
Date: Mon Jan 16 2023 - 09:11:28 EST


From: Alexander Gordeev <agordeev@xxxxxxxxxxxxx>

[ Upstream commit 45d619bdaf799196d702a9ae464b07066d6db2f9 ]

Symbols _edata and _end in the linker script are the
only unaligned expicitly on page boundary. Although
_end is aligned implicitly by BSS_SECTION macro that
is still inconsistent and could lead to a bug if a tool
or function would assume that _edata is as aligned as
others.

For example, vmem_map_init() function does not align
symbols _etext, _einittext etc. Should these symbols
be unaligned as well, the size of ranges to update
were short on one page.

Instead of fixing every occurrence of this kind in the
code and external tools just force the alignment on
these two symbols.

Reviewed-by: Heiko Carstens <hca@xxxxxxxxxxxxx>
Signed-off-by: Alexander Gordeev <agordeev@xxxxxxxxxxxxx>
Signed-off-by: Heiko Carstens <hca@xxxxxxxxxxxxx>
Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
---
arch/s390/kernel/vmlinux.lds.S | 2 ++
1 file changed, 2 insertions(+)

diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S
index b508ccad4856..8ce1615c1046 100644
--- a/arch/s390/kernel/vmlinux.lds.S
+++ b/arch/s390/kernel/vmlinux.lds.S
@@ -80,6 +80,7 @@ SECTIONS
_end_amode31_refs = .;
}

+ . = ALIGN(PAGE_SIZE);
_edata = .; /* End of data section */

/* will be freed after init */
@@ -194,6 +195,7 @@ SECTIONS

BSS_SECTION(PAGE_SIZE, 4 * PAGE_SIZE, PAGE_SIZE)

+ . = ALIGN(PAGE_SIZE);
_end = . ;

/*
--
2.35.1