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