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: <8719bf1ce4a72ebdeb575200290094e9ce047bcc.1661557333.git.jpoimboe@kernel.org>
Date:   Fri, 26 Aug 2022 16:55:44 -0700
From:   Josh Poimboeuf <jpoimboe@...nel.org>
To:     Heiko Carstens <hca@...ux.ibm.com>,
        Vasily Gorbik <gor@...ux.ibm.com>,
        Alexander Gordeev <agordeev@...ux.ibm.com>,
        linux-s390@...r.kernel.org
Cc:     Christian Borntraeger <borntraeger@...ux.ibm.com>,
        Sven Schnelle <svens@...ux.ibm.com>,
        linux-kernel@...r.kernel.org,
        Sumanth Korikkar <sumanthk@...ux.ibm.com>
Subject: [PATCH RFC] s390: Fix nospec table alignments

Add proper alignment for .nospec_call_table and .nospec_return_table in
vmlinux.

Fixes: f19fbd5ed642 ("s390: introduce execute-trampolines for branches")
Signed-off-by: Josh Poimboeuf <jpoimboe@...nel.org>
---
This is RFC because I don't know anything about s390 behavior for
unaligned data accesses, but this seemed to fix an issue for me.

While working on another s390 issue, I was getting intermittent boot
failures in __nospec_revert() when it tried to access 'instr[0]'.  I
noticed the __nospec_call_start address ended in 'ff'.  This patch
seemed to fix it.  I have no idea why it was (only sometimes) failing in
the first place.

The intermittent part of it is probably at least partially explained by
CONFIG_RANDOMIZE_BASE.  Except now I can no longer recreate it :-/

Regardless, this patch seems correct.  I just can't explain what I saw.
Any ideas?

 arch/s390/kernel/vmlinux.lds.S | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S
index 2e526f11b91e..5ea3830af0cc 100644
--- a/arch/s390/kernel/vmlinux.lds.S
+++ b/arch/s390/kernel/vmlinux.lds.S
@@ -131,6 +131,7 @@ SECTIONS
 	/*
 	 * Table with the patch locations to undo expolines
 	*/
+	. = ALIGN(4);
 	.nospec_call_table : {
 		__nospec_call_start = . ;
 		*(.s390_indirect*)
-- 
2.37.2

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ