From nobody Mon Sep 28 11:39:33 2026 Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 95D213A9871 for ; Fri, 21 Aug 2026 22:46:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.69 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787352363; cv=none; b=rNA47SgkkoATV1JqUYLO07RLeQQr1xzO5MG3Q8pJGHrOFhxv3OczIbOgwFGdEXw7woc6WP3GgUZosHQdhaSlfoScSubxqol6mMpO6DgZX1mukdo22RKJKkZFLl7hFD04eLNt30o2RuVk6/LKgwiM7Trvoyhf9ahWjs8RlfwXCxc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787352363; c=relaxed/simple; bh=OEJp5z39oCqCpxH9dM2BpNCfiPMMeGugZKo1K/SEU98=; h=Date:Mime-Version:Message-ID:Subject:From:To:Cc:Content-Type; b=nNJcdGRCVfPSyQeWqP6J2wLePJRTbxMmd/rNcng6VUHtAyfuIg02xstK6PzdQU5HjDIZb35FOxr1bYHhZIOPtNpVJ2PbTCHr5TV06hpfw81KPLHzB5A4FiXbMo0FECl7Gsr7FPfqWgfMoI89JihnlikUAEOoH3+hT7glNIJcVH0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--ndesaulniers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=aLNTGd54; arc=none smtp.client-ip=209.85.216.69 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--ndesaulniers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="aLNTGd54" Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-38dbf293831so3294217a91.3 for ; Fri, 21 Aug 2026 15:46:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787352361; x=1787957161; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:mime-version:date:from :to:cc:subject:date:message-id:reply-to:content-type; bh=PoawpruQ26UxgXhGoUDM/P7VzQ79Tma0wyLntYv3M/I=; b=aLNTGd549SSC3V7UClTYmfiRSt78VODzN2VturfDHddebE4YVcMn6Q4TLSZ8fn3YgQ xZ+HvWgqbyk91QUU/+sQDX4kd5moDldA3HQca0SSXXIdvuSFJUR81rTCngLsAbdeSY8D 0Nj7lAV7wCSm4Ffoj1y3QN3it28VBdc3Yc9W3HG4G2WOlcY1r13rRss9IIXdG0sTt9Bo L2jyXqKibEnKZKRfyv3h+Mwujj9kJtNoTfmMBVV4aQkCP09dsJcQirYl9vm4JnFMP0Pn TJO1a1gJEwKdNLYxunrE3d9/bKSg37pe+MpzZ2/Mzeo/9maY+b676PHlFKPvPCXE8BAL FRRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787352361; x=1787957161; h=content-type:cc:to:from:subject:message-id:mime-version:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=PoawpruQ26UxgXhGoUDM/P7VzQ79Tma0wyLntYv3M/I=; b=pGan16cR6iSQfYSSPVDny9hjYDqHbpZlJEgvV1WA9+FwpKdh/FDew7MLSiYlsrLUlL LSAFu0PQi3klx6ZdZ5Q4f4ne0wgq9dCVdnRfQ/4VWL9yzP4DyENw3vHBtFehc3/EcPB7 v/hBXqWbVsyqaXYIlOCIJEhT7yFi/WcNiiOg/Rw7Gb70wgVGwRRq6jYdI5chlgqC95VR JrgB1ToJJ0gVmmhJ9XvL8jRkEj7/BkfvHx3ptVpNVsZzgMNcVmNeG7ZhzTc5PMbqjeS7 Ss1IrOJFbFdcT55c4pxOErJqjK/+lMWkejspDTtwOdHhMHODDIlaf+577kYqlIqT5KnD 3M4Q== X-Gm-Message-State: AFuF++mtgt8Kk8mIVzi+d8dEWhXeWdT67uLE6bdFuuUU3EFA+BuUoVtn mgMVSmDhn+986TfmbzBu/ZxyhHt/fseQ7YQPTE+b0E2bpsLBPpfJujKkJ9NuS9lv6Q6eawKW6zV vdAj30gUqZ2EaonPrAEQ+NIsvKsOkVA== X-Received: from dlbcm37.prod.google.com ([2002:a05:7022:68a5:b0:139:d9c7:3cf4]) (user=ndesaulniers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:3812:b0:380:fead:448d with SMTP id 98e67ed59e1d1-395c3a09bfemr15847665a91.13.1787352360541; Fri, 21 Aug 2026 15:46:00 -0700 (PDT) Date: Fri, 21 Aug 2026 15:45:42 -0700 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 X-B4-Tracking: v=1; b=H4sIABXViGoC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE vPSU3UzU4B8JSMDIzMDCyND3YKSosTk1PjSxIJMXRMzI2NTAwNjs+SkFCWgjoKi1LTMCrBp0bG 1tQCyeUaBXQAAAA== X-Change-Id: 20260821-ptrace_uapi-462350036cbd X-Developer-Key: i=ndesaulniers@google.com; a=ed25519; pk=O0COsmvrvggwIeEq7bAuRbULbXScoJmbNMYaRi6RFIw= X-Developer-Signature: v=1; a=ed25519-sha256; t=1787352358; l=3055; i=ndesaulniers@google.com; s=20260611; h=from:subject:message-id; bh=OEJp5z39oCqCpxH9dM2BpNCfiPMMeGugZKo1K/SEU98=; b=nXfOMSQEPii8YVDQy8UrkSfJXgJBGvGNfX6ksH6fZLOSUyCwFn0P3gcNXWaQcup2Iz0vj26Ya yMecgjBxvjSACYXvNTyBVGj/Mgas2lC8pRpkXstr0/gtjcTYlKP9EOD X-Mailer: b4 0.14.3 Message-ID: <20260821-ptrace_uapi-v1-1-3de8638a29f2@google.com> Subject: [PATCH] x86: uapi: ptrace: guard register offset macros with __ASSEMBLER__ or __FRAME_OFFSETS From: Nick Desaulniers To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Richard Weinberger , Anton Ivanov , Johannes Berg , Oleg Nesterov , Nathan Chancellor , Bill Wendling , Justin Stitt Cc: linux-kernel@vger.kernel.org, linux-um@lists.infradead.org, llvm@lists.linux.dev, Nick Desaulniers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The register offset macros in are guarded by `defined(__ASSEMBLER__) || defined(__FRAME_OFFSETS)` for 64-bit, but were left unguarded for 32-bit. This causes havoc for userspace that happens to use identifiers colliding with these short macro names (e.g., EBX, ECX, EAX, DS, ES, FS, GS, CS, SS). Without this guard, userspace is forced to be super extra careful with include ordering to minimize the chance of collision. Wrap both the 32-bit and 64-bit register definitions under `#if defined(__ASSEMBLER__) || defined(__FRAME_OFFSETS)`, and ensure User-Mode Linux (UML) defines `__FRAME_OFFSETS` for 32-bit as well. Assisted-by: Gemini Link: https://github.com/llvm/llvm-project/issues/217413 Signed-off-by: Nick Desaulniers Acked-by: Johannes Berg Acked-by: Oleg Nesterov Tested-by: Elliott Hughes --- arch/x86/include/uapi/asm/ptrace-abi.h | 4 ++-- arch/x86/um/asm/ptrace.h | 4 +--- arch/x86/um/ptrace_32.c | 1 + 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/arch/x86/include/uapi/asm/ptrace-abi.h b/arch/x86/include/uapi= /asm/ptrace-abi.h index 5823584dea13..3656955c6faa 100644 --- a/arch/x86/include/uapi/asm/ptrace-abi.h +++ b/arch/x86/include/uapi/asm/ptrace-abi.h @@ -2,6 +2,7 @@ #ifndef _ASM_X86_PTRACE_ABI_H #define _ASM_X86_PTRACE_ABI_H =20 +#if defined(__ASSEMBLER__) || defined(__FRAME_OFFSETS) #ifdef __i386__ =20 #define EBX 0 @@ -25,7 +26,6 @@ =20 #else /* __i386__ */ =20 -#if defined(__ASSEMBLER__) || defined(__FRAME_OFFSETS) /* * C ABI says these regs are callee-preserved. They aren't saved on kernel= entry * unless syscall needs a complete, fully filled "struct pt_regs". @@ -57,12 +57,12 @@ #define EFLAGS 144 #define RSP 152 #define SS 160 -#endif /* __ASSEMBLER__ */ =20 /* top of stack page */ #define FRAME_SIZE 168 =20 #endif /* !__i386__ */ +#endif /* defined(__ASSEMBLER__) || defined(__FRAME_OFFSETS) */ =20 /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ #define PTRACE_GETREGS 12 diff --git a/arch/x86/um/asm/ptrace.h b/arch/x86/um/asm/ptrace.h index 2641d28d115c..439c4151f6b7 100644 --- a/arch/x86/um/asm/ptrace.h +++ b/arch/x86/um/asm/ptrace.h @@ -13,9 +13,7 @@ enum { }; =20 #include -#ifndef CONFIG_X86_32 -#define __FRAME_OFFSETS /* Needed to get the R* macros */ -#endif +#define __FRAME_OFFSETS /* Needed to get the register macros */ #include =20 #define user_mode(r) UPT_IS_USER(&(r)->regs) diff --git a/arch/x86/um/ptrace_32.c b/arch/x86/um/ptrace_32.c index 3af3cb821524..9e9155b0e918 100644 --- a/arch/x86/um/ptrace_32.c +++ b/arch/x86/um/ptrace_32.c @@ -7,6 +7,7 @@ #include #include #include +#define __FRAME_OFFSETS #include #include #include --- base-commit: 26260251022fbc2f248a3d747a9b2b961b18d2d8 change-id: 20260821-ptrace_uapi-462350036cbd Best regards, --=20 Nick Desaulniers