Re: [PATCH v4 01/26] x86/boot: Align vmlinuz sections on page size

From: Ard Biesheuvel
Date: Fri Mar 10 2023 - 09:44:12 EST


On Thu, 15 Dec 2022 at 13:38, Evgeniy Baskov <baskov@xxxxxxxxx> wrote:
>
> To protect sections on page table level each section
> needs to be aligned on page size (4KB).
>
> Set sections alignment in linker script.
>
> Tested-by: Mario Limonciello <mario.limonciello@xxxxxxx>
> Tested-by: Peter Jones <pjones@xxxxxxxxxx>
> Signed-off-by: Evgeniy Baskov <baskov@xxxxxxxxx>
> ---
> arch/x86/boot/compressed/vmlinux.lds.S | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/arch/x86/boot/compressed/vmlinux.lds.S b/arch/x86/boot/compressed/vmlinux.lds.S
> index 112b2375d021..6be90f1a1198 100644
> --- a/arch/x86/boot/compressed/vmlinux.lds.S
> +++ b/arch/x86/boot/compressed/vmlinux.lds.S
> @@ -27,21 +27,27 @@ SECTIONS
> HEAD_TEXT
> _ehead = . ;
> }
> + . = ALIGN(PAGE_SIZE);
> .rodata..compressed : {
> + _compressed = .;
> *(.rodata..compressed)

Can you just move this bit into the rodata section below?

> + _ecompressed = .;
> }
> + . = ALIGN(PAGE_SIZE);
> .text : {

Please use

.text : ALIGN(PAGE_SIZE) {

which marks the section as being page aligned, rather than just being
placed on a 4k boundary.

> _text = .; /* Text */
> *(.text)
> *(.text.*)
> _etext = . ;
> }
> + . = ALIGN(PAGE_SIZE);
> .rodata : {
> _rodata = . ;
> *(.rodata) /* read-only data */
> *(.rodata.*)
> _erodata = . ;
> }
> + . = ALIGN(PAGE_SIZE);
> .data : {
> _data = . ;
> *(.data)
> --
> 2.37.4
>