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

From: Ard Biesheuvel
Date: Wed Oct 19 2022 - 03:01:48 EST


On Tue, 6 Sept 2022 at 12:41, 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.
>
> 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 = .;

Why are you adding these?

> *(.rodata..compressed)
> + _ecompressed = .;
> }
> + . = ALIGN(PAGE_SIZE);

On other EFI architectures, we only distinguish between R-X and RW-
regions, and alignment between .rodata and .text is unnecessary. Do we
really need to deviate from that here?


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