From nobody Tue Sep 16 04:24:49 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 64B99C54EBD for ; Sun, 8 Jan 2023 19:43:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233740AbjAHTnE (ORCPT ); Sun, 8 Jan 2023 14:43:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49536 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233724AbjAHTm6 (ORCPT ); Sun, 8 Jan 2023 14:42:58 -0500 Received: from angie.orcam.me.uk (angie.orcam.me.uk [78.133.224.34]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 6D361324 for ; Sun, 8 Jan 2023 11:42:56 -0800 (PST) Received: by angie.orcam.me.uk (Postfix, from userid 500) id 0D1CC92009C; Sun, 8 Jan 2023 20:42:55 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by angie.orcam.me.uk (Postfix) with ESMTP id 08EF392009B; Sun, 8 Jan 2023 19:42:55 +0000 (GMT) Date: Sun, 8 Jan 2023 19:42:54 +0000 (GMT) From: "Maciej W. Rozycki" To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" cc: x86@kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] x86: Disable kernel stack offset randomization for !TSC Message-ID: User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" For x86 kernel stack offset randomization uses the RDTSC instruction,=20 which causes an invalid opcode exception with hardware that does not=20 implement this instruction: process '/sbin/init' started with executable stack invalid opcode: 0000 [#1] CPU: 0 PID: 1 Comm: init Not tainted 6.1.0-rc4+ #1 EIP: exit_to_user_mode_prepare+0x90/0xe1 Code: 30 02 00 75 ad 0f ba e3 16 73 05 e8 a7 a5 fc ff 0f ba e3 0e 73 05 e8 = 3e af fc ff a1 c4 c6 51 c0 85 c0 7e 13 8b 0d ac 01 53 c0 <0f> 31 0f b6 c0 3= 1 c1 89 0d ac 01 53 c0 83 3d 30 ed 62 c0 00 75 33 EAX: 00000001 EBX: 00004000 ECX: 00000000 EDX: 000004ff ESI: c10253c0 EDI: 00000000 EBP: c1027f98 ESP: c1027f8c DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068 EFLAGS: 00010002 CR0: 80050033 CR2: bfe8659b CR3: 012e0000 CR4: 00000000 Call Trace: ? rest_init+0x72/0x72 syscall_exit_to_user_mode+0x15/0x27 ret_from_fork+0x10/0x30 EIP: 0xb7f74800 Code: Unable to access opcode bytes at 0xb7f747d6. EAX: 00000000 EBX: 00000000 ECX: 00000000 EDX: 00000000 ESI: 00000000 EDI: 00000000 EBP: 00000000 ESP: bfe864b0 DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 007b EFLAGS: 00000200 ---[ end trace 0000000000000000 ]--- EIP: exit_to_user_mode_prepare+0x90/0xe1 Code: 30 02 00 75 ad 0f ba e3 16 73 05 e8 a7 a5 fc ff 0f ba e3 0e 73 05 e8 = 3e af fc ff a1 c4 c6 51 c0 85 c0 7e 13 8b 0d ac 01 53 c0 <0f> 31 0f b6 c0 3= 1 c1 89 0d ac 01 53 c0 83 3d 30 ed 62 c0 00 75 33 EAX: 00000001 EBX: 00004000 ECX: 00000000 EDX: 000004ff ESI: c10253c0 EDI: 00000000 EBP: c1027f98 ESP: c1027f8c DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068 EFLAGS: 00010002 CR0: 80050033 CR2: b7f747d6 CR3: 012e0000 CR4: 00000000 Kernel panic - not syncing: Fatal exception Therefore do not offer the option for CPU configurations that do not=20 guarantee the presence of this instruction. Signed-off-by: Maciej W. Rozycki --- arch/x86/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) linux-x86-randomize-kstack-offset-tsc.diff Index: linux-macro/arch/x86/Kconfig =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- linux-macro.orig/arch/x86/Kconfig +++ linux-macro/arch/x86/Kconfig @@ -186,7 +186,7 @@ config X86 select HAVE_ARCH_USERFAULTFD_WP if X86_64 && USERFAULTFD select HAVE_ARCH_USERFAULTFD_MINOR if X86_64 && USERFAULTFD select HAVE_ARCH_VMAP_STACK if X86_64 - select HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET + select HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET if X86_TSC select HAVE_ARCH_WITHIN_STACK_FRAMES select HAVE_ASM_MODVERSIONS select HAVE_CMPXCHG_DOUBLE