lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200109150218.16544-1-nivedita@alum.mit.edu>
Date:   Thu,  9 Jan 2020 10:02:17 -0500
From:   Arvind Sankar <nivedita@...m.mit.edu>
To:     Thomas Gleixner <tglx@...utronix.de>,
        Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
        "H. Peter Anvin" <hpa@...or.com>
Cc:     x86@...nel.org, linux-kernel@...r.kernel.org
Subject: [PATCH 1/2] x86/boot/compressed/64: Remove .bss/.pgtable from bzImage

Commit 5b11f1cee579 ("x86, boot: straighten out ranges to copy/zero in
compressed/head*.S") introduced a separate .pgtable section, splitting
it out from the rest of .bss. This section was added without the
writeable flag, marking it as read-only. This results in the linker
putting the .rela.dyn section (containing bogus dynamic relocations from
head_64.o) after the .bss and .pgtable sections.

When we use objcopy to convert compressed/vmlinux into a binary for the
bzImage, the .bss and .pgtable sections get materialized as ~176KiB of
zero bytes in the binary in order to place .rela.dyn at the correct
location.

Fix this by marking .pgtable as writeable. This moves the .rela.dyn
section earlier so that .bss and .pgtable are the last allocated
sections and so don't appear in bzImage.

Signed-off-by: Arvind Sankar <nivedita@...m.mit.edu>
---
 arch/x86/boot/compressed/head_64.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index 58a512e33d8d..6eb30f8a3ce7 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -709,7 +709,7 @@ SYM_DATA_END_LABEL(boot_stack, SYM_L_LOCAL, boot_stack_end)
 /*
  * Space for page tables (not in .bss so not zeroed)
  */
-	.section ".pgtable","a",@nobits
+	.section ".pgtable","aw",@nobits
 	.balign 4096
 SYM_DATA_LOCAL(pgtable,		.fill BOOT_PGT_SIZE, 1, 0)
 
-- 
2.24.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ