On Sun, Jul 19, 2020 at 12:39:44PM +0200, Thomas Gleixner wrote:
> The right fix is trivial. See below.
> 
> Thanks,
> 
>         tglx
> ----
>  arch/x86/kernel/vmlinux.lds.S     |    1 +
>  include/asm-generic/vmlinux.lds.h |    1 +
>  2 files changed, 2 insertions(+)
> 
> --- a/arch/x86/kernel/vmlinux.lds.S
> +++ b/arch/x86/kernel/vmlinux.lds.S
> @@ -358,6 +358,7 @@ SECTIONS
>       .bss : AT(ADDR(.bss) - LOAD_OFFSET) {
>               __bss_start = .;
>               *(.bss..page_aligned)
> +             . = ALIGN(PAGE_SIZE);
>               *(BSS_MAIN)
>               BSS_DECRYPTED
>               . = ALIGN(PAGE_SIZE);
> --- a/include/asm-generic/vmlinux.lds.h
> +++ b/include/asm-generic/vmlinux.lds.h
> @@ -738,6 +738,7 @@
>       .bss : AT(ADDR(.bss) - LOAD_OFFSET) {                           \
>               BSS_FIRST_SECTIONS                                      \
>               *(.bss..page_aligned)                                   \
> +             . = ALIGN(PAGE_SIZE);                                   \
>               *(.dynbss)                                              \
>               *(BSS_MAIN)                                             \
>               *(COMMON)                                               \

I thougt about that too (and doing the same for .data..page_aligned),
but decided that 'page_aligned' does not imply 'page_sized', so that
putting other variables on the same page is fine in general and saves
some memory. The problem why it breaks here is only because x86 maps a
variabe which is not page-sized RO, so my thinking was that it should be
fixed right there, at the variable.

But if the above is fine too I prepare a patch which also aligns the end
of .data..page_aligned.

Thanks,

        Joerg

Reply via email to